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下如何查看PHP版本?

    通过命令行直接查询(推荐)方法1:使用 php -v 命令打开终端(Terminal),输入命令: php -v输出示例: PHP 8.1.2 (cli) (built: Aug 8 2022 07:28:23)Copyright (c) The PHP Group第一行即显示PHP版本号(如 1.2),适用场……

    2025年8月7日
    3800
  • Linux下如何查看程序的内存占用情况?

    在Linux系统中,监控程序内存占用是系统管理和性能优化的重要环节,通过查看内存使用情况,可以快速定位内存泄漏、资源占用过高的问题,Linux提供了多种命令和工具来查看程序内存占用,每种工具各有特点,适用于不同场景,本文将详细介绍这些工具的使用方法、输出解读及适用场景,并帮助读者理解Linux内存管理的基本概念……

    2025年8月29日
    3300
  • Linux下如何查看进程号?

    在Linux系统中,进程是程序执行的基本单位,每个进程都会被分配一个唯一的进程号(PID,Process ID),用于系统对进程的标识和管理,查看进程号是系统管理和故障排查中的基础操作,无论是终止异常进程、分析资源占用,还是调试程序,都需要先定位到目标进程的PID,本文将详细介绍Linux系统中查看进程号的多种……

    2025年9月24日
    1800
  • 如何制作linux安装dvd

    空白DVD、下载Linux镜像,用烧录软件如Rufus将镜像写入DVD,完成后

    2025年8月19日
    3500
  • 如何从基础到进阶构建完整的Linux工程师培养与成长体系?

    Linux作为服务器操作系统的绝对主流,在云计算、大数据、人工智能等领域扮演着核心角色,Linux工程师也因此成为企业需求量极大的技术岗位,想要成为一名合格的Linux工程师,需要系统学习知识体系、积累实践经验、培养解决问题的能力,并通过持续进阶适应技术发展,以下从核心职责、知识构建、实践路径、职业发展等方面详……

    2025年9月9日
    2600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信