温馨提示×

centos怎么看僵尸进程数

小樊
47
2026-09-03 05:34:29
栏目: 智能运维

在 CentOS(以及其他 Linux 发行版)中,可以通过多种方式来查看**僵尸进程(Zombie / Z 状态进程)**的数量。


一、使用 ps 命令查看僵尸进程

1. 查看所有僵尸进程

ps -ef | awk '$8 ~ /Z/'

ps aux | awk '$8 ~ /Z/'

2. 统计僵尸进程数量

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

五、僵尸进程说明(简要)

  • 僵尸进程是已经退出但父进程未回收(wait)的进程
  • 不占 CPU、不占内存,但占用 PID
  • 大量僵尸进程通常说明父进程有问题

查找僵尸进程的父进程

ps -ef | awk '$8 ~ /Z/ {print "PID:", $2, "PPID:", $3}'

六、如何处理僵尸进程

  • 不能 kill 僵尸进程
  • 正确做法:
    • 重启或修复父进程
    • 或向父进程发送 SIGCHLD
      kill -SIGCHLD 父进程PID
      

如果你愿意,可以把 ps -eftop 的输出贴出来,我可以帮你分析是哪类进程产生了僵尸。

0