发布于2026-08-21 阅读(0)
扫一扫,手机访问
发现僵尸进程需立即处理:用top确认数量,ps定位PPID,优先发SIGCHLD信号;若无效,kill -9父进程或sudo reboot(PPID为1时)。

当你发现银河麒麟V10系统响应迟缓、systemctl命令频繁报“连接超时”,或top顶部持续显示“Zombie”数量不为0时,说明系统中已积累僵尸进程,必须立即识别并处理。
打开终端(Ctrl + Alt + T),直接执行:top。观察界面右上角区域——若显示类似 Zombie: 3 或 Z: 5 的字样,即表明当前有3个或5个僵尸进程存活。这一步无需额外参数,【top是唯一能实时显示僵尸进程总数的内置命令】。注意:不要误将“S”(休眠)或“R”(运行)状态当作Z状态;Z必须大写且单独出现在STAT列首。
方法一:基础筛选
在终端里执行这个命令:ps aux | grep ' Z '(注意Z前后都有空格哦)。它会把所有STAT列是Z的进程行都列出来,每行里有PID(进程ID)、PPID(父进程ID)、CMD(启动命令)这些重要的字段。grep后面加空格,是为了把那些状态里有Z字母,但并不是僵尸进程的干扰项排除掉(像grep自身进程这种)。
方法二:结构化输出(推荐)
执行:ps -eo pid,ppid,stat,cmd | grep '^[zZ]'。这条命令强制以固定列宽输出PID、PPID、STAT和CMD四列,并用正则精准匹配以Z或z开头的行。输出结果中,第二列PPID就是你要重点记录的父进程ID——【僵尸进程本身无法被kill,只能杀其PPID】。
第一步:查父进程身份
拿到PPID后,执行:ps -p [PPID] -o pid,ppid,comm,args(将[PPID]替换成实际数字)。观察comm列内容,若显示为systemd、sshd或具体业务服务名(如nginx),需谨慎操作。
第二步:确定影响范围
当PPID对应的是systemd(PID=1)时,意味着僵尸进程已被init接管,却未及时回收。此时,常规的kill命令将无法发挥作用,必须重启服务器。若PPID是某个用户级服务(例如自研Ja va应用),且该服务没有正在处理的关键事务,那么就可以进入下一步。
第三步:尝试发送SIGCHLD信号
执行:kill -s SIGCHLD [PPID]。该信号提示父进程主动调用wait()回收子进程。多数合规编写的程序会响应此信号,僵尸进程随即消失。若执行后top中Z数量未减,说明父进程存在缺陷,无法响应信号。
① 针对非systemd父进程:
执行:kill -9 [PPID]。父进程终止后,其所有子进程(包括僵尸)将被init(PID=1)自动收养,init会周期性调用wait()完成最终清理。几秒内top中Z数量应归零。
② 针对PPID为1的场景:
执行:sudo reboot。这是唯一可靠方式——重启强制清空进程表,释放所有被僵尸进程占用的PID槽位。注意:此操作会中断所有服务,【必须提前通知业务方并确认维护窗口】。
上一篇:银河麒麟如何连接无线WiFi网络
下一篇:麒麟系统怎么关闭自动更新的进程
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9