如何终止对-9无反应的进程


9

我看到运行SLES 10.1的SGI Altix 450上的进程似乎停止运行(即,数小时未在其日志中提供进一步的输出)。此时,我想终止有问题的进程,以便重新启动它。顶部显示该过程处于(R)状态。尽管当我尝试杀死它时,什么也没有发生。即使我使用kill -9,它仍然会持续存在。在这种情况下,除了重启机器外,我还能做什么?


2
它们肯定是相同的进程ID吗?不是您要杀死进程,而某些守护进程正在重新启动具有相同名称的进程?
CK。

Answers:


9

进程有可能被杀死,但等待父级收集其返回值。在那种情况下,它被杀死后将处于状态“ Z”而不是“ R”。在那种情况下,您应该ppid使用ps命令查找进程并杀死父进程(如果您确实确定它不会引起任何问题)。

另一种情况可能是由于某种原因,进程像tty这样被杀死后正在重新启动。在这种情况下,每次您杀死-9时,进程ID都会更改。查看进程ID是否在每次尝试杀死它时都在更改。


我相信我正在尝试终止父进程。父进程处于(R)状态。pstree确认了这一点。子进程都处于(Z)僵尸状态。ppid保持静态,因此我不认为它只是在重新启动。
杰瑞德·布朗

如果杀死父进程(及其父进程等),则init将成为处于“ Z”状态的子进程的父级并收集其返回值。因此,删除其父级未使用其返回值的“ Z”子级的最佳方法是也杀死父级,以使init成为已死亡子级进程的父级。
Saurabh Barjatiya 2009年

这就是我遇到的问题。通过kill向父进程发送-9信号不会终止它。
贾里德·布朗

1
将SIGHUP发送给父母有时就足够了。您不必总是杀死父母。
托马斯

2
抱歉,SIGCHLD。(太早了)
Thomas Thomas

2

进程正在等待某些系统资源,也许是NFS?就是不允许它“放手”。很想听听我以外的解决方案...

重新启动盒子,或者让进程停下来。

我想知道您是否可以通过kill -STOP {PID}来“停止”该进程,以防止它消耗更多的CPU。

即使存在另一个已停止的进程,也应该可以重新启动它,但是它可能需要另一个进程仍在使用的列表端口或共享内存段。


1
等待NFS或某些I / O功能完成的进程不会处于(D)状态吗?这些过程处于(R)状态。
贾里德·布朗

有时候,当我ls在s3fs挂载上执行命令时,这正是发生在我身上的事情。直到我用lskill -9umount -l
马可·马萨拉

0

你检查过dmesg了吗?在内核崩溃之后,我已经看到了这一点。恢复的唯一方法是重新启动(最好是尽快重新启动),然后再获得修补的内核。

正常的不可杀死进程将处于D状态,而不是R状态。


除了重新启动以外,关于D状态的硬进程还能做什么吗?ppid = 1
Moriarty教授
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.