在Linux服务器运维中,监控内存使用情况是确保系统稳定运行的关键环节,通过内存数据可以及时发现资源瓶颈、排查性能问题,Linux系统提供了多种命令和工具来查询内存信息,以下详细介绍常用方法及其使用场景。
free命令:快速查看内存使用概览
free
是最基础的内存查看命令,通过-h
(人类可读格式)或-m
/-g
(指定单位)可直观展示内存总量、已用、空闲及缓存情况。
基本用法:
free -h # 以KB/MB/GB为单位显示,自动适配单位 free -m # 以MB为单位显示
输出解读(以free -h
为例):
total used free shared buff/cache available
Mem: 7.7G 2.1G 1.2G 256M 4.4G 5.0G
Swap: 2.0G 0B 2.0G
- total:物理内存总量;
- used:已使用内存(包含应用程序+缓存+缓冲区);
- free:完全空闲内存;
- buff/cache:缓存(文件缓存)和缓冲区(块设备缓存),这部分可被程序回收;
- available:真正可用的内存(free + buff/cache中可回收部分),比
free
更准确,是判断内存是否紧张的核心指标; - Swap:交换分区使用情况,频繁使用Swap可能导致系统卡顿。
top/htop命令:动态监控内存使用进程
top
和htop
可实时查看进程内存占用,适合定位高内存消耗进程。htop
是top
的增强版(需安装,如yum install htop
或apt install htop
),界面更友好,支持鼠标操作。
top命令关键操作:
- 按
M
:按内存使用率降序排序; - 按
c
:切换进程名/完整命令行显示; - 内存相关列:
RES
(物理内存占用)、SHR
(共享内存)、%MEM
(内存使用率百分比)。
htop优势:
- 彩色区分进程状态,内存条形图直观展示;
- 支持横向滚动查看完整命令、F2键进入设置调整显示列;
- 快捷键
F3
搜索进程、F4
过滤进程,定位更高效。
vmstat命令:监控系统内存与交换分区状态
vmstat
可动态显示系统资源使用趋势,包括内存、CPU、磁盘I/O等,适合长期监控。
基本用法:
vmstat 2 5 # 每2秒刷新一次,共显示5次
内存相关字段:
- swpd:已使用的交换分区大小(若持续增大,说明内存不足);
- free:空闲内存(单位KB);
- buff:缓冲区大小;
- cache:缓存大小;
- si/so:每秒从交换区读入/写入内存的数据量(频繁非零需警惕内存不足)。
cat /proc/meminfo:获取详细内存参数
/proc/meminfo
是内核提供的内存信息文件,包含更底层的内存统计,适合精确分析。
常用字段:
MemTotal
:物理内存总量;MemFree
:完全空闲内存;MemAvailable
:可用内存(推荐参考);Buffers
:块设备缓冲区;Cached
:文件页缓存;SwapTotal
/SwapFree
:交换分区总量/剩余量。
示例:
cat /proc/meminfo | grep -E "MemTotal|MemAvailable|SwapTotal"
内存查询命令对比
命令 | 主要用途 | 常用选项 | 输出特点 |
---|---|---|---|
free |
快速查看内存总量及使用情况 | -h 、-m 、-g |
简洁直观,适合快速概览 |
top /htop |
动态监控进程内存占用 | -p (指定进程) |
实时更新,可排序/过滤 |
vmstat |
内存与系统资源趋势监控 | 间隔 、次数 |
动态数据,适合长期分析 |
/proc/meminfo |
获取详细内存参数 | grep 过滤字段 |
底层数据,精确全面 |
相关问答FAQs
Q1:为什么free
命令显示的可用内存(available)比空闲内存(free)小,但系统仍提示内存充足?
A:available
是真正可被程序直接使用的内存(包含空闲内存+可回收的缓存/缓冲区),而free
仅是完全未使用的内存,Linux会主动将空闲内存用于文件缓存(buff/cache
),以提高读写性能,当程序需要内存时,内核会回收这部分缓存,因此available
更能反映实际可用内存,若available
持续低于总内存的10%,才需警惕内存不足。
Q2:top
和htop
查看内存时,RES
和SHR
字段有什么区别?如何判断进程内存是否异常?
A:RES
(Resident Set Size)表示进程当前占用的物理内存(包含私有内存+共享库),SHR
(Shared Memory)表示进程与其他进程共享的内存(如动态库、共享内存段),判断异常时,重点关注%MEM
(内存使用率占比)和RES
绝对值:若单个进程%MEM
超过20%或RES
超过系统内存的30%,且伴随系统卡顿、频繁使用Swap,则可能存在内存泄漏,需进一步分析进程(如用pmap
查看内存映射)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/38339.html