在 CentOS(以及其他 Linux 发行版)中,可以通过多种方式来查看**僵尸进程(Zombie / Z 状态进程)**的数量。
ps 命令查看僵尸进程ps -ef | awk '$8 ~ /Z/'
或
ps aux | awk '$8 ~ /Z/'
ps -ef | awk '$8 ~ /Z/' | wc -l
或
ps aux | awk '$8 ~ /Z/' | wc -l
top 命令查看在终端执行:
top
在输出顶部可以看到类似:
Tasks: 210 total, 1 running, 208 sleeping, 0 stopped, 1 zombie
其中:
zombie 就是僵尸进程数按 q 退出。
/proc 查看(更底层)for p in /proc/[0-9]*; do
if [ "$(awk '{print $2}' $p/stat 2>/dev/null)" = "Z" ]; then
echo $p
fi
done | wc -l
ps 统计状态汇总(推荐)ps -eo stat | sort | uniq -c
示例输出:
1 D
205 S
1 Z
其中:
Z 表示僵尸进程查看僵尸数量:
ps -eo stat | grep Z | wc -l
ps -ef | awk '$8 ~ /Z/ {print "PID:", $2, "PPID:", $3}'
SIGCHLD:kill -SIGCHLD 父进程PID
如果你愿意,可以把 ps -ef 或 top 的输出贴出来,我可以帮你分析是哪类进程产生了僵尸。