在 Linux 系统中,ps(Process Status)命令用于显示当前系统中进程的快照信息,虽然 ps 本身没有像 ls 那样固定的“参数列表”,但它支持两种参数格式:Unix 风格(通常不带连字符,如 aux)和 GNU 风格(通常带连字符,如 --aux)。
以下是 ps 命令最常用、最实用的参数详解:
最常用的组合参数
ps aux
这是最经典的用法,用于列出系统中所有用户的所有进程。
- a: 显示所有终端下的进程(包括其他用户的进程)。
- u: 显示进程的详细信息,包括启动用户、CPU 使用率、内存使用率等。
- x: 显示没有控制终端的进程(即后台守护进程)。
ps -ef
这是另一种列出所有进程的常用方式,输出格式略有不同。
- e: 选择所有进程。
- f: 全格式显示,包括完整的命令行参数。
区别:
ps aux更侧重于资源占用(CPU/内存),ps -ef更侧重于进程层级关系和完整命令。
常用参数详解
显示特定用户的进程
-u <用户名>: 显示指定用户的进程。ps -u root
显示进程树(父子关系)
-f: 全格式输出,包含 PPID(父进程 ID)。--forest: 以树状结构显示进程关系(需要较新版本的 ps)。ps -ef --forest
按资源排序
--sort: 指定排序方式。ps aux --sort=-%mem # 按内存使用率降序排列ps aux --sort=-%cpu # 按 CPU 使用率降序排列
显示特定 PID 的进程
-p <PID>: 显示指定进程 ID 的信息。ps -p 1234
自定义输出格式
-o: 自定义输出列。ps -p 1234 -o pid,ppid,cmd,%cpu,%mem# 输出格式:PID, 父进程ID, 命令, CPU%, 内存%
常用列含义解释
| 列名 | 含义 |
|---|---|
| USER | 进程所有者 |
| PID | 进程 ID |
| %CPU | CPU 使用率 |
%MEM | 内存使用率 |
| VSZ | 虚拟内存使用量(KB) |
| RSS | 常驻内存集大小(实际物理内存,KB) |
| TTY | 控制终端 |
| STAT | 进程状态(见下表) |
| START | 进程开始时间 |
| TIME | 进程占用的 CPU 时间 |
| COMMAND | 启动进程的命令 |
进程状态(STAT 列)常见值:
- R: 运行中或可运行(在队列中等待 CPU)。
- S: 中断睡眠(等待事件完成,如 I/O)。
- D: 不可中断睡眠(通常等待 I/O,无法被 kill 信号中断)。
- T: 已停止(被调试或收到停止信号)。
- Z: 僵尸进程(进程已终止,但父进程未回收其资源)。
- <: 高优先级进程。
- N: 低优先级进程。
- s: 会话领导者(session leader)。
- l: 多线程进程。
实用示例
查找占用 CPU 最高的前 10 个进程
ps aux --sort=-%cpu | head -n 11
查找占用内存最高的前 10 个进程
ps aux --sort=-%mem | head -n 11
查找名为 “nginx” 的进程
ps aux | grep nginx
查看某个 PID 的详细信息(包括完整命令)
ps -fp <PID>
实时监控进程变化(类似 top,但只刷新一次)
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu
注意事项
ps是快照:ps显示的是执行那一刻的进程状态,不会实时更新,如果需要实时监控,请使用top或htop。- 权限问题:普通用户只能看到自己的进程,要查看其他用户的进程,需要使用
sudo。 - GNU 风格 vs Unix 风格:
- 大多数 Linux 发行版(如 CentOS、Ubuntu)同时支持两种风格。
- 在脚本中,推荐使用
ps -ef或ps aux,因为它们兼容性更好。 - 避免使用
ps -aux(混合风格),虽然大多数系统能识别,但不符合规范。
希望这些参数能帮助你更好地管理和监控 Linux 系统中的进程!
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/479210.html



