ps用于获取进程快照,适合脚本调用和快速筛查;top用于实时监控与交互操作,支持动态排序、单进程聚焦及即时终止。

Linux里查进程,ps和top是最常用也最实用的两个命令。它们分工明确:ps是“拍照”,一次看全貌;top是“直播”,持续盯动态。用对了,排查卡顿、定位异常、优化资源都更高效。
ps:快速获取进程快照
ps不刷新,输出即固定,适合脚本调用或快速筛查。
- ps -e:列出所有进程的精简信息(PID、TTY、TIME、CMD),响应快,适合一眼扫清有哪些程序在跑
- ps aux:最常用组合,显示全部用户进程的详细状态,含%CPU、%MEM、STAT(如S休眠、Z僵尸)、START时间等关键字段
- ps -ef:带PPID(父进程ID)和UID,方便追溯进程树关系,比如判断某个服务是否由systemd拉起
- 筛选特定进程:直接管道加grep,例如 ps aux | grep nginx;想看内存前5名,可用 ps aux --sort=-%mem | head -5
top:实时监控与交互操作
top默认每3秒刷新,界面分上下两块:上部是系统概览(负载、CPU、内存),下部是进程列表,默认按CPU占用降序排列。
- 排序切换:按P按CPU、M按内存、T按运行时长;大写M/P效果更稳定(部分终端区分大小写)
- 聚焦查看:用 top -p 1234 只监控单个PID;加 -d 1 可设为每秒刷新,适合抓瞬态峰值
- 即时操作:按k输入PID可终止进程(需权限);按q退出;按L搜索进程名,适合在大量进程中快速定位
- 注意load average值:三个数字分别代表1/5/15分钟平均负载,若长期超过CPU核心数×0.7,说明系统承压,需进一步分析
怎么选?看场景
不需要持续观察时,优先用ps——轻量、可管道、易集成进脚本;怀疑CPU或内存飙高、需要动态跟踪变化、或者要现场kill某个进程,就立刻启top。
- 查某用户所有进程:ps -u username 或 top -u username
- 确认僵尸进程:ps aux | grep 'Z',STAT列显示Z即为僵尸,需检查其父进程是否正常回收
- 看父子关系:ps axf 树状展示,比ps -ef更直观;也可用pstree替代
小贴士:别忽略状态码和字段含义
STAT列里的字母有实际意义:R(运行中)、S(可中断休眠)、D(不可中断休眠,常见于IO等待)、Z(僵尸)、(高优先级)。%CPU和%MEM是相对值,不是绝对占用,总和可能超100%——因为统计的是采样周期内各进程的累计占比。










