ps 命令 #
ps
命令(process status)用于显示当前运行的进程的快照。它提供了系统中正在运行的进程的详细信息,包括进程 ID、CPU 使用率、内存使用情况等。
语法 #
ps [选项]
常用选项 #
ps
命令有三种不同风格的选项:
- UNIX 风格(前缀为
-
) - BSD 风格(无前缀)
- GNU 风格(前缀为
--
)
常用 UNIX 风格选项 #
选项 | 描述 |
---|---|
-e |
显示所有进程 |
-f |
完整格式列表 |
-l |
长格式 |
-u 用户名 |
显示指定用户的进程 |
常用 BSD 风格选项 #
选项 | 描述 |
---|---|
a |
显示所有带终端的进程 |
u |
显示用户为导向的格式 |
x |
显示没有控制终端的进程 |
常用 GNU 风格选项 #
选项 | 描述 |
---|---|
--sort=规则 |
按指定规则排序 |
--forest |
显示进程树 |
常见用法 #
1. 显示当前用户的进程 #
ps
输出示例:
PID TTY TIME CMD
1234 pts/0 00:00:01 bash
5678 pts/0 00:00:00 ps
2. 显示所有进程(BSD 风格) #
ps aux
输出示例:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 168940 9032 ? Ss Jul18 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S Jul18 0:00 [kthreadd]
user 1234 0.0 0.2 115432 10292 pts/0 Ss 10:30 0:01 -bash
user 5678 0.0 0.1 155300 7084 pts/0 R+ 10:35 0:00 ps aux
3. 显示所有进程(UNIX 风格) #
ps -ef
输出示例:
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jul18 ? 00:00:02 /sbin/init
root 2 0 0 Jul18 ? 00:00:00 [kthreadd]
user 1234 1233 0 10:30 pts/0 00:00:01 -bash
user 5678 1234 0 10:35 pts/0 00:00:00 ps -ef
4. 显示进程树 #
ps -ejH
或
ps axjf
5. 显示特定用户的进程 #
ps -u username
6. 按 CPU 使用率排序 #
ps aux --sort=-%cpu
7. 按内存使用率排序 #
ps aux --sort=-%mem
8. 显示特定进程及其子进程 #
ps -ef --forest | grep processname
9. 显示进程的安全信息 #
ps -eo pid,user,group,args
10. 自定义输出格式 #
ps -eo pid,user,%cpu,%mem,cmd
输出列解释 #
BSD 风格(aux)输出列 #
USER
:进程所有者PID
:进程 ID%CPU
:CPU 使用率%MEM
:内存使用率VSZ
:虚拟内存大小(KB)RSS
:常驻内存大小(KB)TTY
:控制终端STAT
:进程状态代码START
:进程启动时间TIME
:累计 CPU 时间COMMAND
:命令及其参数
UNIX 风格(-ef)输出列 #
UID
:用户 IDPID
:进程 IDPPID
:父进程 IDC
:CPU 使用率STIME
:进程启动时间TTY
:控制终端TIME
:累计 CPU 时间CMD
:命令及其参数
进程状态代码 #
代码 | 描述 |
---|---|
R |
运行中或可运行(在运行队列中) |
S |
可中断的睡眠(等待事件完成) |
D |
不可中断的睡眠(通常是 IO) |
T |
已停止(被作业控制信号或因被追踪而停止) |
Z |
僵尸进程(已终止但父进程尚未调用 wait) |
< |
高优先级 |
N |
低优先级 |
+ |
前台进程组中的进程 |
提示 #
- 组合使用
ps
和grep
可以快速找到特定进程:ps aux | grep processname
- 使用
ps -ef --forest
可以清晰地查看进程的父子关系 - 使用
watch -n 1 'ps aux --sort=-%cpu | head -10'
可以每秒更新一次显示 CPU 使用率最高的 10 个进程 - 对于实时监控,考虑使用
top
或htop
命令 ps
命令只显示进程的快照,不会自动更新- 使用
ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu | head -10
可以自定义输出格式并只显示 CPU 使用率最高的 10 个进程