处理Ubuntu僵尸进程最有效的方法需根据场景选择,核心思路是优先终止异常父进程,或通过系统机制自动回收,具体方法如下:
ps aux | grep 'Z' 找到僵尸进程的PPID(父进程ID)。kill -9 <父进程PID> 强制终止父进程,子进程会被init进程(PID=1)自动回收。waitpid() 系统调用回收子进程资源,避免僵尸进程产生。SIGCHLD 信号处理函数,自动处理子进程退出。/usr/local/bin/cleanup-zombie.sh:#!/bin/bash
while true; do
ps aux | grep 'Z' | awk '{print $2}' | xargs -r kill -9
sleep 60
done
/etc/systemd/system/cleanup-zombie.service,启用后自动运行。crontab -e 添加定时任务,每分钟运行清理脚本(脚本内容同上)。kill -9 导致数据异常。参考来源: