在 CentOS(以及所有 Linux 系统)中,僵尸进程(Zombie / Z 状态进程)本身不能被直接 kill 掉,因为它们已经退出,只是还在进程表中保留条目,等待父进程读取退出状态。
正确处理方式是处理它的父进程。
ps -ef | grep defunct
或
ps aux | awk '$8 ~ /Z/'
示例:
user 1234 1200 0 10:00 ? 00:00:00 [xxx] <defunct>
1234 是僵尸进程 PID1200 是父进程 PPID如果父进程是正常的(如服务程序):
kill -CHLD 父进程PID
通知父进程处理子进程退出状态。
如果父进程不处理僵尸:
kill 父进程PID
或
systemctl restart 服务名
例如:
systemctl restart nginx
一般很少见,通常是系统异常,可考虑:
reboot
kill -9 僵尸PID
❌ 对僵尸进程无效,因为它已经死了。
wait() / waitpid()signal(SIGCHLD, SIG_IGN)如果你愿意,可以贴出:
ps -ef | grep defunct
我可以帮你判断该杀哪个父进程。