温馨提示×

debian如何查看僵尸进程

小樊
53
2026-09-08 00:20:11
栏目: 智能运维

在 Debian(以及其它 Linux 发行版)中,查看**僵尸进程(Zombie / defunct 进程)**通常有以下几种常用方法:


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

方法 1:查看所有僵尸进程

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

或:

ps -ef | awk '$8 == "Z"'

说明:

  • Z 表示进程状态为 zombie
  • 僵尸进程通常显示为 defunct

方法 2:只看状态列

ps -eo pid,ppid,stat,cmd | grep Z

示例输出:

1234  1000 Z    [test] <defunct>

二、使用 top 或 htop

top

top

在顶部可以看到:

Tasks: 210 total,   1 zombie

htop(更直观,需安装)

sudo apt install htop
htop

僵尸进程通常显示为灰色或标记为 Z


三、通过 /proc 查看(进阶)

for p in /proc/[0-9]*; do
  if [ "$(cat $p/stat 2>/dev/null | awk '{print $3}')" = "Z" ]; then
    echo "$p is zombie"
  fi
done

四、统计僵尸进程数量

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

五、僵尸进程的处理说明(重要)

⚠️ 僵尸进程不能直接 kill

僵尸进程已经:

  • 释放了大部分资源
  • 只保留进程表项等待父进程回收

正确处理方式:

  1. 杀掉或重启父进程
    ps -o ppid= -p <僵尸PID>
    kill -9 <父进程PID>
    
  2. 让父进程调用 wait()
  3. 若是服务问题,重启相关服务

六、常见原因

  • 父进程未正确处理子进程退出
  • 程序 bug(未调用 wait / waitpid)
  • 服务异常崩溃

如果你愿意,可以贴出 ps 或 top 的输出,我可以帮你分析具体是哪一个进程导致的僵尸。

0 踩