ps 是 Linux 最基础的进程查看命令,通过 ps aux、ps -ef 等参数组合可高效监控与排查;STAT 状态码(如 R/S/D/Z/T)反映进程核心状态,配合字段含义(%CPU、RSS、VSZ 等)精准定位异常。

ps 是 Linux 中最基础也最常用的进程查看命令,但默认输出信息有限、不易读。通过合理组合参数,能快速定位异常进程、识别运行状态、筛选关键字段。掌握常用组合和状态码含义,是系统监控与故障排查的必备技能。
常用参数组合及适用场景
以下组合兼顾可读性与实用性,适合日常运维:
- ps aux:显示所有用户的所有进程(包括无终端的守护进程),字段含 CPU/内存占用、启动时间等,最常用;
- ps -ef:以全格式显示进程树(含 PPID),适合分析父子进程关系,不显示 CPU 和内存百分比;
- ps aux --sort=-%cpu:按 CPU 使用率降序排列,快速找出“吃资源”的进程;
-
ps aux --sort=-%mem | head -10:结合
head查看内存占用最高的前 10 个进程; - ps -C nginx -o pid,ppid,%cpu,%mem,cmd:按进程名(如 nginx)精确匹配,并自定义输出字段,便于脚本调用。
关键字段含义速查
以 ps aux 为例,重点关注以下列:
- USER:进程所有者(非启动用户);
- PID:进程唯一标识号;
- %CPU / %MEM:当前占用的 CPU 和物理内存百分比(基于采样周期,非实时瞬时值);
- VSZ:虚拟内存大小(KB),含已分配未使用的内存;
- RSS:常驻内存集(KB),即实际占用的物理内存;
- STAT:进程状态码(见下节),最需重点识别;
- START:进程启动时间(非系统启动时间);
- TIME:进程累计使用的 CPU 时间(非运行时长)。
STAT 状态码详解与典型含义
STAT 列由 1–4 个字符组成,首字符为核心状态,后续为附加标志。常见组合如下:
- R:正在运行(Running)或可被调度(Runnable),正常活跃状态;
- S:休眠(Sleeping),等待某事件(如 I/O 完成),多数后台进程处于此态;
- D:不可中断休眠(Uninterruptible Sleep),通常因等待磁盘 I/O 或内核锁,无法用 kill -9 终止,需排查硬件或驱动问题;
- Z:僵尸进程(Zombie),子进程已终止但父进程未调用 wait() 回收,本身不占资源,但 PID 被占用;
- T:已停止(Stopped)或被追踪(Traced),常见于调试(gdb)或收到 SIGSTOP;
- 附加标志示例:Sl 表示多线程(l = multi-threaded),R+ 表示该进程属于前台进程组。
实用小技巧
- 用
ps aux | grep -v grep | grep java避免匹配到 grep 自身进程; - 结合
--forest(如ps -eo pid,ppid,comm --forest)以树状结构展示进程层级; - 使用
watch -n 2 'ps aux --sort=-%cpu | head -5'每 2 秒刷新一次高 CPU 进程列表; - 对可疑进程,用
cat /proc/<PID>/status查看更详细的内存与状态信息。










