在 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/RHELF5)。pstree(查看进程树)pstree -p <进程ID>
-p:显示进程PID。-u:显示用户名称。systemctl(管理系统服务)systemctl status <服务名>
bash
systemctl status nginxActive)。/proc 文件系统(底层信息)cat /proc/<PID>/status
bash
cat /proc/1234/status | grep Statepgrep:快速查找进程PID。
bash
pgrep -l nginxpidof:直接获取进程PID。
bash
pidof nginx僵尸进程:
ps aux | grep 'Z' 查找僵尸进程。高CPU/内存占用:
top 或 htop 定位异常进程。strace 或 perf 分析系统调用。进程卡死:
D(不可中断睡眠),可能是I/O阻塞。根据需求选择合适的工具:
- 快速检查:ps 或 pgrep。
- 实时监控:top / htop。
- 分析依赖关系:pstree。
- 服务管理:systemctl。