ps 是 linux 查看进程的核心命令,默认仅显示当前终端进程;常用 ps aux 查所有进程,支持按 cpu/内存排序、筛选特定进程及分析 stat 状态码。

ps 是 Linux 中最基础、最常用的进程查看命令,它能快速列出当前系统中运行的进程及其状态、资源使用情况等关键信息。默认情况下,ps 只显示当前终端相关的进程(即当前 shell 启动的进程),若要查看更全面的信息,需配合特定选项使用。
常用组合:ps aux 查看所有用户的所有进程
这是最实用的用法之一:
-
a:显示所有终端(包括其他用户的)进程 -
u:以用户友好的格式(含 CPU/内存占用、用户、启动时间等)显示 -
x:显示没有控制终端的进程(如后台服务、守护进程)
输出字段含义示例(部分):
- USER:进程所属用户
- %CPU:该进程占用的 CPU 百分比(采样周期内)
- %MEM:该进程占用的物理内存百分比
- RES:常驻内存大小(实际占用的物理内存,单位 KB)
- TIME+:CPU 使用总时间(精确到百分之一秒)
按资源排序:快速定位高负载进程
结合 sort 可直观找出“吃资源”的进程:
- 按 CPU 占用降序:
ps aux --sort=-%cpu | head -10 - 按内存占用降序:
ps aux --sort=-%mem | head -10 - 按运行时间升序(找最老的进程):
ps aux --sort=start_time | head -5
注意:--sort 参数在较新版本的 procps(如 Ubuntu 20.04+、CentOS 8+)中支持;旧系统可用 ps aux | sort -k3nr | head -10(以第3列 %CPU 排序)。
筛选特定进程:配合 grep 或 -C 选项
查找某个程序是否在运行,或只看某类进程:
- 查 nginx 进程:
ps aux | grep nginx(注意会同时匹配到 grep 自身,可加[n]ginx规避) - 查指定用户的进程:
ps -u www-data - 查指定命令名的进程(精确匹配):
ps -C python3 - 查进程树结构(显示父子关系):
ps -ef --forest或ps auxf
理解 STAT 列中的常见状态码
进程状态是判断其健康与否的关键线索:
-
R:正在运行或可运行(runnable) -
S:睡眠中(sleeping),等待事件(如 I/O、信号) -
D:不可中断睡眠(uninterruptible sleep),通常在等待磁盘 I/O,kill无效 -
Z:僵尸进程(zombie),子进程已终止但父进程未回收,需排查父进程逻辑 -
T:被停止(stopped)或被追踪(traced),如被调试器暂停 - 附加符号如
(高优先级)、<code>N(低优先级)、+(前台进程组)也出现在 STAT 中
不复杂但容易忽略










