在Linux系统中,进程的状态通常分为以下几种(具体名称可能因内核版本或工具不同略有差异):
Running
或Runnable
)
ps
或 top
命令时状态显示为 R
。Sleeping
)
ps/top
中显示为 S
。Disk Sleep
)
kill -9
)。ps/top
中显示为 D
。Stopped
)
SIGSTOP
、SIGTSTP
)暂停,或正在被调试(如gdb
)。SIGCONT
信号恢复运行。ps/top
中显示为 T
。Zombie
)
wait()
系列系统调用)。ps/top
中显示为 Z
。Traced
)
strace
、gdb
)跟踪时暂停。ps
中可能显示为 t
。ps/top
的输出中。Idle
)
ps
命令bash
ps aux | grep <进程名> # 查看STAT列(如 R、S、D、Z 等)
top
命令bash
top # 查看进程状态(S列)
/proc
文件系统bash
cat /proc/<PID>/status | grep State
创建 → [Running] ←→ [Interruptible Sleep] ←→ [Uninterruptible Sleep]
↓ ↑ ↑
↓ (exit) ↑ (signal/event) ↑ (I/O完成)
↓ ↑ ↑
[Zombie] ←─── [父进程回收]
wait()
或终止父进程(僵尸会由 init
回收)。kill -CONT <PID>
恢复。理解这些状态对系统监控和故障排查至关重要!