«

Linux查看内存占用排序free和ps命令组合

时间:2026-11-14 07:20     作者:emer     分类: Linux


前言

服务器内存吃紧、进程莫名占高,需要先看整体用量,再定位是哪个进程。free 看全局内存,ps 配合排序找出占用最高的进程,两者组合是内存排查标准流程。本文讲解 free 各项含义、ps 按内存排序、实时监控、清理缓存的判断方法。

操作步骤

1. 查看整体内存

free -h

重点看 available(可用)和 used(已用),buff/cache 是可回收缓存。

2. 看缓存与交换分区

free -h -s 2

每 2 秒刷新一次。

3. ps 按内存占用降序排列

ps aux --sort=-%mem | head -15

4. ps 按 CPU 占用排序

ps aux --sort=-%cpu | head -15

5. 查看指定进程内存明细

ps -p PID -o pid,rss,%mem,cmd

RSS 是常驻物理内存,单位 KB。

6. 实时观察用 top/htop

top

按 M 按内存排序,按 q 退出。

7. 清理页缓存(谨慎)

sync && echo 3 > /proc/sys/vm/drop_caches

常见坑

  1. 把 buff/cache 当成被占用,Linux 主动用缓存提速,available 才是关键。
  2. 只看 used 就以为内存不足,忽略缓存可回收。
  3. ps 不排序时输出混乱,用 --sort=-%mem。
  4. RSS 包含共享库,多进程合计不等于总量。
  5. 盲目 drop_caches 反而降低性能,缓存不足时无需清。
  6. 真正内存泄漏要看进程 RSS 是否持续上涨。
  7. 交换分区 swap 使用高说明物理内存紧张。

总结

内存排查先 free -h 看 available,再 ps aux --sort=-%mem 定位高占用进程,top 实时观察。buff/cache 不是负担,关注持续上涨的 RSS。缓存清理谨慎执行,优先找到内存泄漏进程而非粗暴清缓存。

遇到问题加QQ23979811 协助处理

标签: Linux ps 排查 free 内存