温馨提示×

ubuntu 怎么查看僵尸进程

小樊
76
2026-07-27 12:49:55
栏目: 智能运维

在 Ubuntu(以及大多数 Linux 系统)中,可以通过以下几种方式查看僵尸进程(Zombie Process)。


一、什么是僵尸进程

僵尸进程的状态是 Z(Zombie),表示:

  • 子进程已经结束
  • 但父进程还没有调用 wait() / waitpid() 回收其资源
  • 进程表中仍保留一条记录

⚠️ 僵尸进程不占用 CPU / 内存,但会占用 PID。


二、使用 ps 查看僵尸进程(最常用)

1️⃣ 查看所有僵尸进程

ps aux | grep 'Z'

或更准确:

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

示例输出:

1001  999 Z    [zombie_proc] <defunct>

字段说明:

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

2️⃣ 只看 STAT 为 Z 的进程

ps -e -o pid,ppid,stat,cmd | awk '$3 ~ /Z/'

三、使用 top 查看

top

在 top 中:

  • 按 f
  • 找到 S(进程状态)
  • 确认是否出现 Z

或在汇总信息中看到:

Tasks: 123 total, 1 zombie

四、使用 htop(更直观,需安装)

sudo apt install htop
htop
  • 僵尸进程通常显示为 Z
  • 颜色或标记更明显

五、查看僵尸进程的父进程

僵尸进程不能直接 kill,需要找父进程:

ps -o pid,ppid,stat,cmd -p <僵尸PID>

然后查看父进程状态:

ps -p <PPID> -o pid,stat,cmd

六、如何处理僵尸进程 ✅

✅ 正确方式

  1. 让父进程回收子进程
    • 父进程调用 wait() / waitpid()
  2. 重启或修复父进程
    kill -HUP <PPID>
    
    或
    systemctl restart <service>
    

❌ 错误方式(无效)

kill -9 <僵尸PID>   # ❌ 没用

七、如果父进程是 init(PID 1)

如果父进程是 1:

ps -o pid,ppid,stat,cmd -p <僵尸PID>

说明:

  • 父进程已退出
  • 僵尸进程被 init/systemd 接管
  • 通常会自动回收

八、总结速查表

操作 命令
查看僵尸进程 ps -eo pid,ppid,stat,cmd | grep Z
top 中查看 top → 看 Tasks
查看父进程 ps -o ppid -p <PID>
清除僵尸 重启 / 修复父进程
直接 kill 僵尸 ❌ 无效

如果你愿意,可以把 ps -eo pid,ppid,stat,cmd 的输出贴出来,我可以帮你分析具体是哪个程序在产生僵尸进程。

0 踩