如果 kill -9 没有效果,如何在 Linux 中终止进程

如果 kill -9 没有效果,如何在 Linux 中终止进程

我认为 kill -9 仍然只是向进程发送信号。如果进程表现不佳,我认为 kill -9 不会产生任何效果。事实上,今天我第一次看到 kill -9 在发送给卡住的 ruby​​ 进程时没有任何效果。所以我的问题是:有没有更严厉的方式来终止进程?

答案1

您必须重新启动机器。如果kill -9没有终止进程,则意味着它卡在内核中。除非您能找出它卡在什么地方并解除它,否则您无能为力。它卡住的原因是它在等待某事,而完全停止等待所需的逻辑根本不存在。

(以上假设该进程已被重新设置为init。否则,它的父进程可能会保留它。您可能必须终止其父进程。)

答案2

每当我的作业卡住并且信号 9 或 15 无法终止它时,我就会向它发送信号 30 (SIGPWR),几乎每次它都会清除它。我不记得发送断电信号什么时候不起作用。

答案3

是的,重新启动...

通常情况下,虽然无法杀死-9进程不是问题,因为这些进程不会占用太多系统资源,它们可能只是僵尸进程。唯一一次需要我重新启动才能摆脱它是因为它“占用”了我需要使用的 tcp 端口。

相关内容