我看到运行 SLES 10.1 的 SGI Altix 450 上的进程似乎停止运行(即在其日志中数小时内未提供进一步的输出)。此时我想杀死有问题的进程,以便重新启动它。Top 表示进程处于 (R) 状态。尽管当我试图杀死它时,什么都没有发生。即使我使用 kill -9 它仍然存在。在这种情况下,除了重启机器我还能做什么?
我看到运行 SLES 10.1 的 SGI Altix 450 上的进程似乎停止运行(即在其日志中数小时内未提供进一步的输出)。此时我想杀死有问题的进程,以便重新启动它。Top 表示进程处于 (R) 状态。尽管当我试图杀死它时,什么都没有发生。即使我使用 kill -9 它仍然存在。在这种情况下,除了重启机器我还能做什么?
进程可能已被杀死,但正在等待父进程收集其返回值。在这种情况下,它被杀死后将处于状态“Z”而不是“R”。在这种情况下,您应该
ppid
使用ps
命令找到进程并杀死父进程(如果您真的确定它不会引起任何问题)。另一种情况可能是由于某种原因进程在像 tty 一样被杀死后重新启动。在这种情况下,每次执行 kill -9 时,进程 ID 都应该更改。每次尝试杀死它时,查看进程 ID 是否正在更改。
该进程正在等待一些系统资源,也许是 NFS?那是不允许它“放手”。很想听听我以外的一些解决方案......
重新启动盒子,或者让进程坐在那里。
我想知道您是否可以通过 kill -STOP {PID} 来“停止”该进程,以防止它消耗更多的 CPU。
即使有另一个停止的进程在附近,也应该可以重新启动它,但它可能需要一个列表端口或共享内存段,该端口仍在其他进程使用。
你检查过 dmesg 了吗?我在内核恐慌后看到了这一点;恢复的唯一方法是重新启动(最好很快)——然后得到一个打过补丁的内核。
正常的不可杀死进程将处于 D 状态,而不是 R。