如何在Linux上杀死僵尸进程

是什么导致Linux上的僵尸进程?

 

写得不好的父进程可能不会调用该wait()创建子进程时, 函数。 这意味着没有任何东西在监视子进程中的状态变化,并且该SIGCHLD信号将被忽略。 或者,可能是由于不良的编程或恶意的意图,另一个应用程序正在影响父进程的执行。

但是,如果父进程不在子进程中监视状态变化,则不会发生适当的系统内务处理。 子进程终止时,不会删除PCB和进程表中的条目。 这导致僵尸状态永远不会从PCB上移除。

僵尸确实会占用一些内存,但通常不会造成问题。 进程表中的条目很小,但是在发布之前,进程ID无法重用。 在64位操作系统上,这不太可能引起任何问题,因为PCB比工艺表条目大得多。

可以想象,大量的僵尸可能会影响可供其他进程使用的内存量。 但是,如果您有那么多僵尸,那么父应用程序或操作系统错误就是一个严重的问题。

如何删除僵尸进程

您无法杀死僵尸进程,因为它已经死了。 它不会对任何信号做出响应,因为它已从内存中删除了-无处发送SIGKILL信号。 您可以尝试将 发送SIGCHLD信号 给父进程,但是如果子进程终止时它不起作用,那么现在也不大可能起作用。

唯一可靠的解决方案是杀死父进程。 终止时,其子进程将被该 继承init进程 ,这是在Linux系统中运行的第一个进程(其进程ID为1)。

该init进程定期执行必要的清理僵尸的操作,因此要杀死它们,您只需杀死创建它们的进程即可。 该top命令是查看是否有僵尸的便捷方法。

<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值