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
常见坑
- 把 buff/cache 当成被占用,Linux 主动用缓存提速,available 才是关键。
- 只看 used 就以为内存不足,忽略缓存可回收。
- ps 不排序时输出混乱,用 --sort=-%mem。
- RSS 包含共享库,多进程合计不等于总量。
- 盲目 drop_caches 反而降低性能,缓存不足时无需清。
- 真正内存泄漏要看进程 RSS 是否持续上涨。
- 交换分区 swap 使用高说明物理内存紧张。
总结
内存排查先 free -h 看 available,再 ps aux --sort=-%mem 定位高占用进程,top 实时观察。buff/cache 不是负担,关注持续上涨的 RSS。缓存清理谨慎执行,优先找到内存泄漏进程而非粗暴清缓存。
遇到问题加QQ23979811 协助处理