Linux如何查看内存使用率?常用命令及详细步骤有哪些?

在Linux系统中,内存管理是系统性能优化的核心环节,准确查看内存使用率是判断系统负载、排查性能问题的关键,本文将详细介绍Linux系统中查看内存使用率的多种方法,包括常用命令、参数解析及适用场景,帮助用户全面掌握内存监控技巧。

linux如何查看内存使用率

使用free命令快速查看内存概览

free是最基础的内存查看命令,通过读取/proc/meminfo文件,直观展示系统内存的总体使用情况,其基本用法如下:

free [-h|-m|-g] [-s]

参数说明:

  • -h:以人类可读格式显示(如KB、MB、GB),默认单位为KB;
  • -m/-g:分别以MB/GB为单位显示;
  • -s N:每N秒刷新一次,适合动态监控(如free -s 2)。

输出示例(以free -h为例):

              total        used        free      shared  buff/cache   available
Mem:          7.7Gi       2.1Gi       4.2Gi       128Mi       1.4Gi       5.3Gi
Swap:         2.0Gi          0B       2.0Gi

字段解析:

  • total:物理内存总容量;
  • used:已使用内存(包含应用程序占用、内核缓冲、缓存等);
  • free:完全未被使用的内存;
  • shared:被多个进程共享的内存(如tmpfs);
  • buff/cache:缓冲区(buff)和缓存(cache)内存,属于可回收内存;
  • available实际可用内存(重点!包含free + 可回收的buff/cache),是判断内存是否紧张的核心指标,若available持续低于总内存的10%,可能触发OOM(Out of Memory)。

使用top/htop命令动态监控内存与进程

tophtop是实时监控系统资源的工具,不仅能查看整体内存使用率,还能定位具体的高内存占用进程。

top命令

top [-m] [-p PID]
  • -m:仅显示内存相关信息(默认显示CPU、内存等);
  • -p PID:监控指定进程(如top -p 1234)。

内存相关列说明:

  • %MEM:进程内存占用率(进程驻留内存/总物理内存×100%);
  • RES:进程驻留集大小(物理内存占用,不含共享内存);
  • SHR:进程共享内存大小;
  • VIRT:进程虚拟内存大小(含物理内存、交换区、共享库等)。

操作技巧:按M可按%MEM降序排序(高内存进程置顶),按q退出。

linux如何查看内存使用率

htop命令(top的增强版)

htop提供更友好的界面(如颜色区分、进程树、快捷键操作),需提前安装(Ubuntu/Debian:apt install htop;CentOS:yum install htop)。

核心功能:

  • 界面顶部实时显示内存使用率(如Mem[|||||||||||||||||||||||||||||||||||||||||] 27%);
  • F6可选择排序字段(如PERCENT_MEM按内存占用率排序);
  • F9可终止选中进程,适合快速处理异常进程。

使用vmstat命令分析内存趋势

vmstat(Virtual Memory Statistics)侧重于内存使用的动态趋势,适合分析内存压力和交换分区活动。

vmstat [-s] [时间间隔 [次数]]
  • -s:显示内存事件的详细统计(如内存分配、回收次数);
  • 时间间隔:刷新间隔(秒),次数:刷新总次数(如vmstat 2 5表示每秒刷新1次,共5次)。

输出示例(关键列):

procs -----------memory---------- ---swap-- ---io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 4.2Gi  128Mi  1.4Gi    0    0     45    12   60  120  5  2 92  0  0

字段解析:

  • swpd:已使用的交换分区大小(若持续增长,说明物理内存不足);
  • free:空闲物理内存;
  • buff:缓冲区内存(用于文件系统元数据);
  • cache:页面缓存(用于文件数据缓存);
  • si/so:每秒从交换区分入/分出的内存(so>0且持续表示频繁换页,性能下降)。

通过/proc/meminfo文件获取原始数据

/proc/meminfo是内核提供的内存信息文本文件,适合脚本处理或精确查询特定指标。

linux如何查看内存使用率

cat /proc/meminfo

关键字段示例:

MemTotal:        7947168 kB  # 物理内存总量
MemFree:         4325884 kB  # 空闲内存
MemAvailable:    5451232 kB  # 实际可用内存(推荐使用)
Buffers:          131072 kB  # 缓冲区
Cached:          1456128 kB  # 页面缓存
SwapTotal:       2097152 kB  # 交换区总量
SwapFree:        2097152 kB  # 交换区空闲

提取特定字段(如查看可用内存):

grep MemAvailable /proc/meminfo | awk '{print $2}'

命令对比与适用场景

命令 适用场景 优点 缺点
free 快速查看内存概览,判断可用内存 简单直观,默认预装 信息较少,无进程级数据
top 实时监控进程内存占用 动态更新,可排序筛选 界面复杂,需手动操作
htop 高效定位高内存进程,交互式监控 界面友好,支持快捷键和进程树 需额外安装
vmstat 分析内存趋势和交换分区活动 提供动态统计,适合脚本 无进程级数据,需理解字段含义
/proc/meminfo 获取原始数据,脚本处理 数据最全面,可精确查询 输出冗长,需手动解析

相关问答FAQs

Q1:为什么free命令显示的used内存很高,但系统运行并不卡顿?

A:Linux内存管理中,used内存包含两部分:应用程序实际占用内核缓存(buff/cache),后者是为了提升文件读写性能而预留的内存,属于“可回收内存”,当应用程序需要内存时,内核会自动释放缓存,因此即使used很高,只要available内存充足(通常建议大于总内存的10%),系统就不会卡顿,可通过free -h查看available字段判断实际可用内存。

Q2:如何查看某个特定进程的内存使用详情?

A:可通过以下命令定位进程内存:

  1. ps命令ps -p PID -o pid,ppid,cmd,%mem,rss,vsz,其中%mem为内存占用率,rss为物理内存占用(KB),vsz为虚拟内存占用(KB)。
  2. top/htop:在top中按PM排序(CPU/内存),或在htop中选中进程按F9终止。
  3. smem工具(需安装):smem -p PID可查看进程的PSS(Proportional Set Size,更准确的内存占用统计,避免重复计算共享内存)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/21594.html

(0)
酷番叔酷番叔
上一篇 2025年9月8日 16:33
下一篇 2025年9月8日 16:47

相关推荐

  • Linux下图像如何进行H.265编码?

    在Linux环境下对图像或视频进行H.265(HEVC)编码,主要依赖开源工具如FFmpeg和x265编码器,通过命令行实现高效压缩,以下是详细操作流程及关键参数解析,环境准备与工具安装H.265编码需安装FFmpeg(集成x265编码器)及必要的依赖库,以Ubuntu/Debian系统为例,执行以下命令:su……

    2025年8月27日
    14500
  • Linux加载硬件驱动的具体步骤和方法是什么?

    Linux驱动加载是操作系统与硬件设备交互的核心环节,其过程涉及内核模块管理、硬件探测、依赖解析等多个层面,理解这一过程有助于系统管理员和开发者高效解决硬件兼容性问题,优化系统性能,以下从驱动基础、加载机制、手动与自动加载方法、故障排查等方面详细阐述Linux如何加载硬件驱动,Linux驱动基础:内核模块与设备……

    2025年10月4日
    11900
  • linux 如何模糊匹配字符串

    Linux 中,可以使用 grep 命令进行模糊匹配字符串,`grep

    2025年8月14日
    15000
  • Linux系统中如何正确删除.swp文件?

    在Linux系统中,.swp文件是vim或nano等文本编辑器在编辑文件时自动生成的临时备份文件,主要用于在编辑器异常退出(如直接关闭终端、系统断电)后恢复未保存的修改,正常情况下,当用户正常退出编辑器时,这些临时文件会被自动删除;但如果异常退出,.swp文件会残留下来,长期占用磁盘空间,甚至可能因文件名冲突导……

    2025年9月17日
    13500
  • Linux如何设置默认网关?

    在Linux系统中,默认网关(Default Gateway)是网络通信中的关键角色,它决定了当目标地址不在本地网络时,数据包需要发送到的下一跳地址,正确设置默认网关是确保Linux设备能够访问外部网络(如互联网)的基础操作,本文将详细介绍Linux系统中设置默认网关的多种方法,包括临时设置和永久设置,并针对不……

    2025年10月7日
    12000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信