ps 是最轻量可靠的进程资源查看工具,用 ps aux --sort=-%mem | head -n 11 查内存前10,--sort=-%cpu 查cpu前10,--sort=-rss 看物理内存占用,加 -w 防命令截断;top 适合动态验证趋势,htop 提升操作效率,rss 比 %mem 更能反映真实内存压力。

用 ps 一次性看内存或 CPU 占用前 N 名
想快速知道谁在吃内存或 CPU,ps 是最轻量、最可靠的选择——不依赖交互、不卡顿、可直接进脚本。它输出的是某一时刻的快照,适合排查和记录。
-
ps aux --sort=-%mem | head -n 11:按内存使用率(%MEM)降序,取表头 + 前 10 个进程;注意head -n 11是因为第一行是列名 -
ps aux --sort=-%cpu | head -n 11:同理看 CPU 占用大户 - 想看绝对物理内存(KB)而非百分比?改用
--sort=-rss,比如ps aux --sort=-rss | head -n 11,这对识别缓慢增长的内存泄漏更敏感 - 如果进程命令被截断(如 Java 应用只显示
java),加-w展开:ps auxw --sort=-rss | head -n 11
用 top 实时排序并动态验证
top 不是“看一眼就走”,而是帮你确认某个进程是否持续高占——比如刚看到某进程 RSS 突然涨了 500MB,再过 2 秒又涨了,基本能锁定异常。
- 启动后默认按 %CPU 排序;按
M(大写)切到 %MEM 降序,按P切回 CPU 排序,来回对比很实用 - 按
f可启用/禁用字段,确保RSS和%MEM都显示出来——有些发行版默认不显示RSS列 - 按
o进入过滤模式,输入USER=www-data或COMMAND=python3,缩小范围后再排序,避免被无关进程干扰 - 别只盯着 %MEM:一个占系统 5% 内存的进程,在 64GB 机器上才 3.2GB;但若它的
RSS从 200MB 涨到 2GB 并持续,才是真问题
用 htop 提升可读性与操作效率
htop 不是玩具,它是解决“找得慢、看不清、杀错进程”这类实际痛点的工具。安装一次,后续排查省下大量时间。
- Ubuntu/Debian:
sudo apt install htop;CentOS/RHEL:sudo yum install htop或dnf install htop - 运行后默认按 CPU 排序;按
F6→ 选PERCENT_MEM→ 回车,立即重排;支持方向键滚动、空格多选、F9杀进程,比top的k+ 输入 PID 快得多 - 颜色编码直观:红色 = 高内存,绿色 = 高 CPU;但注意——颜色阈值不可配置,不能替代数值判断
- 它不显示
load average或 CPU 各状态细分(us/sy/wa),所以查 I/O 瓶颈时仍要回top或vmstat
为什么 rss 比 %mem 更值得盯住
百分比容易掩盖真实风险。一台 4GB 的小服务器上,%MEM 25% 就是 1GB;而 64GB 服务器上,同样 25% 是 16GB——但后者可能只是正常缓存行为。
-
RSS(Resident Set Size)是进程当前实际占用的物理内存 KB 数,单位统一、趋势清晰,适合用watch -n 1 'ps -p 12345 -o rss=%'持续观察单个进程 -
VIRT和SHR会干扰判断:VIRT包含已分配但未使用的虚拟地址空间,SHR是共享库部分,多个进程共用同一份代码时会被重复计入RSS - 若需公平比较共享内存影响,用
smem算PSS(Proportional Set Size):smem -s pss -r | head -n 10;但它需要 root 权限,普通用户执行会漏掉部分进程
-Xmx 设太高导致 RSS 虚高)。这时候光靠排序不够,得结合 pmap -x PID 看内存段分布,或者用 cat /proc/PID/status 查 VmRSS 和 VmData 的变化节奏。











