init 的孩子们,你们已经死了!为什么还不离去?!

2017 年 2 月 13 日
 MartinWu
情况是这样的,之前出现过大量 sshd 僵尸,我现在想重现这种情况,实现的是:

init 进程的一些子进程为 Z 状态,并一直保持住。

求大神指教。
4859 次点击
所在节点    Linux
10 条回复
Siril
2017 年 2 月 13 日
得散点纸钱才行
linbiaye
2017 年 2 月 13 日
不重启还能咋办,至多社区报个 bug.
dbg
2017 年 2 月 13 日
我还以为是 init 和 systemd 的引战帖子。
MartinWu
2017 年 2 月 13 日
@linbiaye 我现在想重现这种情况。就是怎么样才能实现这种状况。
MartinWu
2017 年 2 月 13 日
@dbg 我承认我标题党了~~
hareandlion
2017 年 2 月 13 日
死了变僵尸活着
loading
2017 年 2 月 13 日
@dbg 我也是。
MartinWu
2017 年 2 月 13 日
现在的一些线索导向,可能是 supervisor 的锅。两次都是在 supervisord 上面重启过所有的 app 后,僵尸进程就突然消失了。。然而, supervisord 并没有用 root 启动,而是一个没权限切到 root 的普通账号。
MartinWu
2017 年 2 月 13 日
还在继续跟踪。。
Siril
2017 年 2 月 14 日
https://www.google.com/search?q=how+to+create+zombie+process&ie=utf-8&oe=utf-8&client=firefox-b-ab

据说是这样,未亲手验证:
先 fork 出一个子进程,
然后父进程 sleep ,子进程 exit ,
子进程就 zombie 了。

然后根据这个:
https://www.google.com/search?q=how+to+create+zombie+process&ie=utf-8&oe=utf-8&client=firefox-b-ab#q=cleanup+zombie+process
干掉父进程,子进程会被 init 接管,然后会被 wait 后清除。
所以? init 接管后还有一大堆 zombie ? 哪里的 bug 呢

试试这个:
https://stackoverflow.com/questions/20535438/cant-cleanup-a-zombie-process-whose-parent-is-init

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/340136

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX