我认为 kill -9 仍然只是向进程发送信号。如果进程表现不佳,我认为 kill -9 不会产生任何效果。事实上,今天我第一次看到 kill -9 在发送给卡住的 ruby 进程时没有任何效果。所以我的问题是:有没有更严厉的方式来终止进程?
答案1
您必须重新启动机器。如果kill -9
没有终止进程,则意味着它卡在内核中。除非您能找出它卡在什么地方并解除它,否则您无能为力。它卡住的原因是它在等待某事,而完全停止等待所需的逻辑根本不存在。
(以上假设该进程已被重新设置为init
。否则,它的父进程可能会保留它。您可能必须终止其父进程。)
答案2
每当我的作业卡住并且信号 9 或 15 无法终止它时,我就会向它发送信号 30 (SIGPWR),几乎每次它都会清除它。我不记得发送断电信号什么时候不起作用。
答案3
是的,重新启动...
通常情况下,虽然无法杀死-9进程不是问题,因为这些进程不会占用太多系统资源,它们可能只是僵尸进程。唯一一次需要我重新启动才能摆脱它是因为它“占用”了我需要使用的 tcp 端口。