如何杀死一个不会死的进程?

如何杀死一个不会死的进程?

我的生产服务器上的“setroubleshootd”守护程序出了问题。它占用了大量 CPU 但无论如何都不会死!

我尝试过

sudo killall -9 setroubleshootd
sudo killall -9 <<pid>>

答案1

不幸的是,最好的解决方案是重新启动。它卡在内核中。

您可以尝试解除堵塞。但这本身就很危险。这可能会导致内核崩溃。有序重启要安全得多。

基本上,解决堵塞的方法是弄清楚它在做什么(使用ls /proc/<pid>/fd、等工具top),然后采取措施改变它卡住的地方。如果它卡在某个进程上,请尝试终止该进程。如果它卡在某个文件上,请尝试删除该文件。这种方法很少奏效,但即使奏效,我也会认为系统被污染了,无论如何都会重新启动它。

弄乱它可能会导致更多进程“卡在”它后面。

答案2

这不是您想要的答案,但是如果该过程不会终止,那么您可能运气不佳 - 您可能需要重新启动。 (我注意到,终止 PID 的命令是 kill -9 <> 而不是 killall。

我怀疑,如果启用了 Mafic_SysRQ 键(例如 NFS 挂载),您可以使用该键绕过一小部分事件 - 但我并没有尝试过这么多,而且它是为开发人员准备的 - 而且我怀疑,通常默认情况下不启用。更多信息这里。

相关内容