ps
命令是Linux/Unix系统中用于查看进程状态的核心工具,全称为"Process Status"。它能够显示当前系统的进程信息,是系统管理和故障排查的重要工具。
ps [options]
查看当前终端进程
ps
仅显示当前终端启动的进程
查看所有进程
ps -e
ps -A # 同上,显示所有进程
完整格式输出
ps -ef
显示所有进程的完整信息,包括UID、PID、PPID等
BSD风格输出
ps aux
这是最常用的组合之一,显示详细信息包括内存和CPU使用情况
ps aux
输出的典型列:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
代码 | 含义 |
---|---|
D | 不可中断的休眠状态(通常是在等待I/O) |
R | 运行中或可运行(在运行队列中) |
S | 休眠中(可被中断) |
T | 已停止(通常由作业控制信号或进程被跟踪) |
Z | 僵尸进程(已终止但未被父进程回收) |
< | 高优先级进程 |
N | 低优先级进程 |
L | 有页面被锁定在内存中 |
s | 会话首进程 |
l | 多线程进程 |
+ | 位于前台进程组 |
ps -eo pid,user,cmd,%cpu,%mem --sort=-%cpu | head
显示特定字段并按CPU使用率降序排列
ps -u username
ps -ejH
ps axjf # 显示进程树
ps -eLf
ps -T -p <PID> # 查看特定进程的线程
结合watch
命令实现实时监控:
watch -n 1 'ps -eo pid,user,cmd,%cpu,%mem --sort=-%cpu | head'
ps e -p <PID>
查找特定进程
ps aux | grep nginx
显示完整命令行
ps -ww -e # -ww确保不截断命令行
查看进程打开的文件
ps -p <PID> -o pid,cmd,files
显示进程的安全上下文(SELinux)
ps -eZ
显示进程的调度策略
ps -eo pid,cmd,cls # cls字段显示调度策略
ps
命令的输出是执行瞬间的系统状态快照,不是实时数据ps
命令可能有细微差异top
或htop
可能更合适ps
通常只显示容器内的进程top
/htop
: 实时进程监控pgrep
/pkill
: 基于名称查找/终止进程pidof
: 查找运行中进程的PID掌握ps
命令的各种用法能够大大提高Linux系统管理和故障排查的效率,是每位系统管理员和开发者的必备技能。