温馨提示×

Debian怎么查看僵尸进程

小樊
40
2026-08-15 06:00:29
栏目: 智能运维

在 Debian(以及大多数 Linux 发行版)中,可以通过以下几种方式查看僵尸进程(Zombie Process)


什么是僵尸进程

僵尸进程的状态是 Z,表示进程已经结束,但父进程还没有调用 wait() 回收它的资源。
僵尸进程不占用 CPU / 内存,但会占用 PID。


方法一:使用 ps 查看僵尸进程(最常用)

ps aux | grep 'Z'

或更直观一点:

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

输出示例

1234  1000  Z  [zombie_process] <defunct>

字段说明:

  • Z:僵尸状态
  • <defunct>:已失效进程
  • PPID:父进程 ID(关键)

方法二:使用 tophtop

top

top

top 中:

  • f → 选择 S(状态)显示
  • 状态为 Z 的就是僵尸进程

顶部也会显示:

Tasks: 95 total, 1 zombie

htop(推荐)

sudo apt install htop
htop
  • 状态列显示 Z
  • 或用过滤功能:
    • F4
    • 输入:Z

方法三:直接统计僵尸进程数量

ps aux | awk '$8=="Z" { print $2 }' | wc -l

或者:

ps -eo stat | grep -c Z

如何清理僵尸进程?

⚠️ 僵尸进程不能直接 kill

正确做法

  1. 找到父进程
ps -eo pid,ppid,stat,cmd | grep Z
  1. 重启或终止父进程
kill -9 父进程PID

父进程退出后,僵尸进程会被 init(或 systemd)接管并清理。


常见原因

  • 父进程未正确处理 SIGCHLD
  • 程序 bug(尤其是 C / C++、守护进程)
  • 父进程卡死或死循环

总结

方法 命令
查看僵尸进程 `ps -eo pid,ppid,stat,cmd
实时查看 top / htop
统计数量 `ps -eo stat
清理 杀父进程

如果你愿意,可以把 ps 输出贴出来,我可以帮你分析是哪个程序导致的僵尸进程。

0