如何在Linux系统中Kill掉僵尸进程(kill zombie-processes)


原文地址:如何在Linux系统中Kill掉僵尸进程(kill zombie-processes)

“僵尸进程”是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 /内存,则最好在下一次计划的系统维护中杀死父进程或重新启动系统。

评论

登录后评论

服务器优惠活动

Top