Solaris 10 init 无法收获僵尸进程

Solaris 10 init 无法收获僵尸进程

ps目前显示有 17617 个僵尸进程,所有进程的 ppid 均为 1/init。init 应该正在清理这些已停止运行的进程,但不知为何并未清理。已停止运行的进程数量正在增加。

尝试强制使用它们进行收割preap会失败:

preap: Failed to reap 15977: the only non-defunct ancestor is 'init'

顺便说一下,下面是我计算进程的方法:

% ps -e -o pid,s,ppid | awk 'index($2,"Z")>0 {ppid[$3]=ppid[$3]+1} END {for (key in ppid) print key,ppid[key]}'
1 17617

我发现这个令人不安的日志条目:

Jun 20 22:45:34 host genunix: [ID 470503 kern.warning] WARNING: Sorry, no swap space to grow stack for pid 1 (init)

操作系统是 Solaris 10(SunOS host 5.10 Generic_150401-04 i86pc i386 i86pc)。

答案1

事实证明,init 只是停止了正常工作,可能是因为系统出现了交换 I/O 问题。

事实证明,如果 init 在关闭操作系统的过程之外退出,它只会重新启动。因此,我向 init 发送了一个 SIGSEGV(以确保它不会模仿它确定正在关闭的方式),它重新启动了 init(仍然是 pid 1),新的 init 立即收割了所有未完成的僵尸进程。

不过,我可能应该重新启动以清除由于交换 I/O 问题可能存在的任何其他问题。

相关内容