“僵尸进程”是Linux系统中常见的一种无效进程,因为无效所以要清除掉。本篇文章分享了如何使用ps命令以及kill命令查找Linux僵尸进程和杀死Linux僵尸进程。
僵尸进程也被称为“无效”进程–简单来说,僵尸进程是已失效但存在于系统进程表中的进程。理想情况下,它应该在完成作业/执行后从进程表中清除掉,但是由于某种原因,其父进程在执行后不能正确清除它。
Linux僵尸进程是如何产生的
在Linux的世界中,进程在完成执行并退出后会通知其父进程。然后,父流程将从流程表中删除该流程。在此步骤中,如果父进程无法从其子进程(已完成的进程)中读取进程状态,则它将无法从内存中删除该进程,因此进程表中仍然存在已死的进程–因此,被称为僵尸进程!
查找Linux的僵尸进程
为了杀死僵尸进程,我们需要首先对其进行识别。以下命令可用于查找僵尸进程:
ps aux | egrep "Z|defunct"
输出的STAT列中的Z和/或最后一个(COMMAND)列中的[defunct]将标识Zombie进程。
Kill掉Linux的僵尸进程
僵尸进程是无法杀死的,因为它已经死了!所以想杀死僵尸进程,必须先显式地通知其父进程,以便它可以重试以读取子(死)进程的状态,并最终从进程表中清除它们。这可以通过向父进程发送SIGCHLD信号来完成。以下命令可用于查找父进程ID(PID):
ps -o ppid= <Child PID>
获得僵尸的父进程ID后,可以使用以下命令将SIGCHLD信号发送到父进程:
kill -s SIGCHLD <Parent PID>
但是,如果这无助于清理Zombie进程,则您将不得不终止或重新启动其父进程,或者如果Zombie进程激增导致或走向系统中断,那么您将别无选择系统重启。以下命令可用于终止其父进程:
kill -9 <Parent PID>
请注意,杀死父进程将影响其所有子进程,因此快速进行仔细检查将有助于确保安全。另外,如果很少有僵尸进程不占用大量CPU /内存,则最好在下一次计划的系统维护中杀死父进程或重新启动系统。
评论前必须登录!
注册