如果'kill-9'不起作用怎么办?
kill -9
(SIGKILL)不断运行,因为您已批准终止进程。 主要是这个过程必须由你开始,也不是setuid或setgid,或者你必须是起源。 有一个豁免:原点也不能向PID 1发送致命信号(init
进程)。
尽管如此,kill -9
无法保证正常运行 很快 。 所有由SIGKILL组成的信号都是异步提供的:该位可能需要时间来提供它们。 通常,提供信号需要花费几分钟的大部分时间,就在它认为目标获得时间的那一刻。 尽管如此,如果目标有阻止了信号,信号肯定会排队,直到目标解除阻塞。
通常,程序不能阻碍SIGKILL。 然而,当代码调用系统调用时,位代码可以执行位代码。 当扰乱系统调用肯定会在位中某处产生严重创建的数据结构时,位代码会阻塞所有信号,或者甚至更常见的是在某些位稳定的情况下反复出现。 因此,如果(由于错误或错误设计)系统调用永远阻塞,可能没有其他方法可以杀死进程。 (但过程 肯定会的 如果在完成系统调用之前就被淘汰了。)
系统调用中受阻的进程仍保留在不间断的睡眠中。 ps
或top
命令肯定会(在大多数unices上)显示状态D
(最初用于“ d isk“,我假设)。
长时间不间断休息的永恒实例是当Web服务器没有响应时通过NFS访问文档的过程; 现代执行通常不会强制执行不间断的休息(例如在Linux下,intr
位置替代允许信号干扰NFS文档访问)。
您可能偶尔会在ps
或top
结果中看到访问重要的Z
(或Linux下的H
,我不知道有什么区别)。 这些实际上不是程序,它们是僵尸程序,这绝对没有什么比访问这样的表,维持以确保妈妈和爸爸过程可以被警告其年轻人的死亡。 当妈妈和爸爸处理关注(或去世)时,他们肯定会消失。
如果@ 马切伊和@ 吉尔斯是解决方案,那么解决方法就是解决您的问题,而且您也不会识别该过程(并且还要询问您的发行版是什么不会显示解决方案)。 寻找Rootkit以及您曾经使用过的各种其他指标 拥有 。 rootkit大于阻止你消除进程的能力。 实际上有几个可以阻止你看到它们。 然而,如果他们忽略了改变1个小程序,他们就可以被看到(作为一个例子,他们改变了top
,但不是htop
)。 很可能这不是实例,而是比抱歉更安全。
某些时候存在过程,并且由于以下原因而无法消除:
- 僵尸。 即妈妈和爸爸没有阅读出口站的过程。 除了PID访问之外,这样的过程不会吃任何类型的来源。 在
top
中,它表示为Z. - 错误的不间断休息。 它有时不需要混合使用有缺陷的位代码和/或有缺陷的设备。 唯一的方法是重启或等待。 在
top
中,它由D表示。
杀实际上建议发送信号。 您可以发送许多信号。 kill - 9是一个独特的信号。
当发出信号时,应用程序管理它。 否则内核会管理它。 所以你可以在你的应用程序中捕获一个信号。
然而我声称杀人 - 9是独一无二的。 它是独特的,因为应用程序没有得到它。 它直接进入内核,之后在第一个可行的可能性下绝对消除了应用程序。 把它简单地消灭它就死了
kill - 15发出信号SIGTERM,表示SIGNAL TERMINATE,只是通知应用程序放弃。 这是告知应用程序是时候关闭的愉快方法。 但如果应用程序没有反应杀死 - 9肯定会杀死它。
如果kill - 9不起作用,它可能表明你的内核用完了。 重启仍然是有序的。 我不记得以前发生过。