在 Linux 系统中,查看进程运行状态有多种命令和方式。以下是常用的方法及说明:
ps
命令(最基础)ps aux | grep <进程名/关键字>
a
:显示所有用户的进程。u
:显示进程的详细状态(CPU、内存等)。x
:包括未关联终端的进程(如后台服务)。STAT
:进程状态(见下文解释)。%CPU
、%MEM
:CPU 和内存占用率。bash
ps aux | grep nginx
状态码 | 含义 |
---|---|
R |
运行中(Running)或可运行(在运行队列中等待CPU) |
S |
可中断的睡眠状态(等待事件完成,如I/O操作) |
D |
不可中断的睡眠(通常与硬件I/O相关,不能被信号唤醒) |
T |
暂停状态(如通过 Ctrl+Z 或 SIGSTOP 信号) |
Z |
僵尸进程(已终止但未被父进程回收) |
< |
高优先级进程 |
N |
低优先级进程 |
s |
会话领导者(主进程) |
l |
多线程进程 |
+ |
前台进程组 |
top
/ htop
(实时监控)top
(系统自带)top
P
:按CPU使用率排序。M
:按内存使用率排序。q
:退出。PID
:进程ID。STAT
:进程状态(同 ps
)。NI
:进程优先级(Nice值)。htop
(需安装,更友好)htop
bash
sudo apt install htop # Debian/Ubuntu
sudo yum install htop # CentOS/RHEL
F5
)。pstree
(查看进程树)pstree -p <进程ID>
-p
:显示进程PID。-u
:显示用户名称。systemctl
(管理系统服务)systemctl status <服务名>
bash
systemctl status nginx
Active
)。/proc
文件系统(底层信息)cat /proc/<PID>/status
bash
cat /proc/1234/status | grep State
pgrep
:快速查找进程PID。
bash
pgrep -l nginx
pidof
:直接获取进程PID。
bash
pidof nginx
僵尸进程:
ps aux | grep 'Z'
查找僵尸进程。高CPU/内存占用:
top
或 htop
定位异常进程。strace
或 perf
分析系统调用。进程卡死:
D
(不可中断睡眠),可能是I/O阻塞。根据需求选择合适的工具:
- 快速检查:ps
或 pgrep
。
- 实时监控:top
/ htop
。
- 分析依赖关系:pstree
。
- 服务管理:systemctl
。