free命令用于查看Linux系统物理内存和Swap使用情况,显示total、used、free、buff/cache及available等关键指标,其中available才反映真正可用内存,-h参数以易读单位显示,-s和-c支持持续监控。

直接看 free -h 就能知道系统级内存是否吃紧,但想定位具体哪个进程在吃内存,得用 ps 或 top 配合排序。
用 free 快速掌握整体内存水位
它显示的是物理内存总量、已用、空闲,以及内核缓冲区(buffers/cache)的占用。关键注意第三行 -/+ buffers/cache 的 free 值——这才是应用真正能用上的内存余量。
-
free -h是最常用写法,自动按合适单位(M/G)显示,人眼友好 - 如果要持续观察,
free -h -s 2每 2 秒刷新一次;-c 5则只输出 5 次(v3.3.10+ 默认每秒一次,不加-s也生效) - 别只盯着第一行的
used:那个值把 buffers/cached 全算进“已用”,但它们是可回收的,实际压力要看第三行的free -
free -V查版本,老版本(如 v3.2.8)的-c行为和新版本不一致,容易误判输出次数
用 ps aux --sort=-%mem 找出内存大户进程
这是最轻量、最可控的静态排查方式,适合脚本调用或快速快照。
-
--sort=-%mem按物理内存占用百分比降序排;--sort=+%mem是升序 - 加
| head -n 10只看前 10 名,避免刷屏;tail -n +2可跳过表头 -
%mem是相对总物理内存的百分比,但 RSS 值(ps输出里的RSS列)才是真实 KB 数,更利于横向比较 - 注意:
ps不包含内核线程(如kthreadd),也不显示共享内存段细节,纯用户态进程视角
用 top 实时交互式监控时别踩排序键陷阱
top 启动后默认按 CPU 排,内存排序必须手动触发,且大小写敏感。
- 按下
Shift + M(大写 M)才按%MEM降序;小写m是切换显示/隐藏内存相关信息,不是排序 - 排序后字段列可能被截断,按
c可展开完整命令路径,确认是不是你预期的进程 -
top刷新间隔默认 3 秒,太频繁会增加开销;按s可临时改间隔,比如s 1设为 1 秒 - 退出用
q,别用Ctrl+C,否则可能残留前台作业
为什么 htop 更适合日常排查
它默认开启鼠标支持和彩色高亮,进程树、内存条形图、垂直滚动都让信息更直观,但需额外安装。
- 启动后直接看到内存使用率柱状图,顶部有实时总览,不用记字段含义
- 按
F6进入排序菜单,选%MEM回车即可,无大小写混淆风险 - 支持鼠标点击列头排序,也可用方向键选中进程后按
F9杀进程,操作链路更短 - 注意:
htop不是所有发行版默认预装,CentOS/RHEL 需先yum install htop,Ubuntu/Debian 用apt install htop
真正卡住的时候,往往不是总内存不够,而是某个进程 RSS 突增又没释放,或者大量 page cache 没被及时回收。这时候光看 free 的数字会误判,必须下钻到进程维度——ps 简洁,top 实时,htop 直观,三者互补,别只依赖一个。


















