我有一个带有大量僵尸进程的服务器。将近一千。如果可能的话,我想获得这些进程,因为看起来父级(一个父级导致所有 1000 个僵尸)不会调用等待函数。我看到 bash 有一个内置的等待功能,但是当我使用它来尝试收割其中一个僵尸时,我收到以下错误。
# wait 17517
bash: wait: pid 17517 is not a child of this shell
我是root,但这似乎没有什么区别。我有几个问题
- 如果它不是我的 shell 的子进程,我可以收获一个僵尸进程吗?
- 如果没有,有什么我可以做的吗?我不确定我是否应该杀死父母
- 我应该担心吗?似乎父母有资源泄漏,不是垃圾收集或其他什么。
不,你不能。
您可以尝试停止父级,然后
exec
从忽略的 shell重新启动它SIGCHLD
。忽略的父母SIGCHLD
不会留下僵尸。如果僵尸的数量增加,最终您将达到无法分叉新进程的地步。