温馨提示×

ubuntu僵尸进程怎么看

小樊
42
2026-10-04 05:18:19
栏目: 智能运维

在 Ubuntu(以及其他 Linux 发行版)里,僵尸进程(Zombie / 僵死进程)是已经结束、但父进程还没回收它状态的进程。下面从怎么看、怎么判断、怎么处理三个方面说明。


一、怎么查看僵尸进程

1️⃣ 用 ps 查看

ps aux | grep Z

或只看状态列:

ps -ef -o pid,ppid,stat,cmd | awk '$3=="Z"'

僵尸进程的特征:

STAT = Z

例如:

user   1234  1200  0 10:00 ?  00:00:00 [process] <defunct>

2️⃣ 用 top / htop

top

top

看最上面一行:

Tasks: 210 total,   1 zombie

htop(更直观)

htop

僵尸进程通常显示为灰色或 <defunct>


3️⃣ 查看僵尸数量

ps aux | awk '$8=="Z"' | wc -l

二、僵尸进程的本质

僵尸进程不占 CPU、不占内存,只保留:

  • PID
  • 退出状态
  • 父进程信息

⚠️ 僵尸进程不能被 kill 掉


三、怎么“处理”僵尸进程

✅ 正确做法:处理它的父进程

1️⃣ 找到父进程

ps -o ppid= -p <僵尸PID>

2️⃣ 看父进程是谁

ps -p <PPID> -o pid,cmd

3️⃣ 解决方式

  • 父进程正常但没 wait()
    • 修复程序(开发问题)
  • 父进程卡死 / bug
    kill -TERM <PPID>
    
    或
    kill -9 <PPID>
    

    父进程死后,僵尸会被 init / systemd 接管并回收


四、特殊情况说明

1️⃣ 父进程是 init / systemd(PID 1)

  • 一般不会产生僵尸
  • 如果产生,通常是系统 bug

2️⃣ 大量僵尸进程

常见原因:

  • 程序频繁 fork 但不回收
  • 服务异常(如 Java / Python 子进程管理问题)

五、一句话总结

僵尸进程看 ps 的 STAT=Z,不能 kill,只能杀父进程或修程序。

如果你愿意,可以把你的:

  • ps aux | grep Z
  • 或 top 截图

发出来,我可以帮你具体分析是哪个程序在制造僵尸进程。

0 踩