温馨提示×

debian怎么看僵尸进程数

小樊
42
2026-10-02 00:27:32
栏目: 智能运维

在 Debian(以及其他 Linux 发行版)中,查看僵尸进程(zombie / Z 状态进程)数量有几种常用方法:


方法一:使用 ps 命令

ps aux | awk '$8 ~ /Z/ {print $0}'

说明:

  • ps aux 显示所有进程
  • $8 是进程状态字段
  • Z 表示僵尸进程(zombie)

只看数量:

ps aux | awk '$8 ~ /Z/' | wc -l

方法二:使用 top / htop

top

top

在顶部信息中能看到类似:

Tasks: 210 total,   1 running, 208 sleeping,   0 stopped,   1 zombie

其中 zombie 就是僵尸进程数。

htop(更直观,需安装)

sudo apt install htop
htop

在上方状态栏也会显示 zombie 数量。


方法三:从 /proc 统计(脚本/程序常用)

grep -c '^State:.*zombie' /proc/[0-9]*/status

或:

for p in /proc/[0-9]*; do
  if grep -q 'State:.*Z' "$p/status" 2>/dev/null; then
    echo "$p"
  fi
done | wc -l

方法四:使用 vmstat

vmstat

输出中有一列:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 123456  78901  23456    0    0     1     2   34   56  1  0 99  0  0

(不直接显示 zombie,不如前几种直观)


补充说明

  • 僵尸进程是 已经结束但父进程还没回收(wait) 的进程
  • 少量僵尸进程一般无害
  • 大量僵尸进程通常说明 父进程有 bug 或挂死
  • 解决方式通常是:
    • 重启父进程
    • 或让父进程正确调用 wait()
    • 极端情况可 kill -9 父进程(会让 init 接管并回收)

如果你愿意,可以贴一下 ps aux | grep Z 的输出,我可以帮你判断是哪个进程在产生僵尸。

0 踩