首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >runit会收获孤儿过程吗?

runit会收获孤儿过程吗?
EN

Stack Overflow用户
提问于 2015-07-28 06:22:49
回答 1查看 684关注 0票数 0

我正在编写一个基于击打基象的小型码头容器,它提供了一个现成的runit。

我把卡桑德拉和奥普斯中心的特工放进了我的容器里。两者都是在/etc/service下作为服务启动的(如doc中所示)。

这个博客帖子提到my_init将收集僵尸进程,但对于它如何处理孤立进程却含糊不清。

下面是我的Docker容器中ps -ef的一个示例输出:

代码语言:javascript
复制
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 06:05 ?        00:00:00 /usr/bin/python3 -u /sbin/my_init
root        27     1  0 06:05 ?        00:00:00 /usr/bin/runsvdir -P /etc/service
root        28    27  0 06:05 ?        00:00:00 runsv sshd
root        29    27  0 06:05 ?        00:00:00 runsv syslog-ng
root        30    27  0 06:05 ?        00:00:00 runsv cron
root        31    27  0 06:05 ?        00:00:00 runsv cassandra
root        32    27  0 06:05 ?        00:00:00 runsv syslog-forwarder
root        33    27  0 06:05 ?        00:00:00 runsv opscenter-agent
root        34    32  0 06:05 ?        00:00:00 tail -F -n 0 /var/log/syslog
root        35    30  0 06:05 ?        00:00:00 /usr/sbin/cron -f
root        36    29  0 06:05 ?        00:00:00 syslog-ng -F -p /var/run/syslog-ng.pid --no-caps
root        37    31 43 06:05 ?        00:00:10 java -ea -javaagent:/usr/share/cassandra/lib/jamm-0.3.0.jar -XX:+CMSClassUnloadingEnabled -XX:+UseThreadPriorities -XX:ThreadPrio
root        38    33  0 06:05 ?        00:00:00 /bin/bash /usr/local/opscenter/datastax-agent-5.2.0/bin/datastax-agent -f
root       471    38 51 06:05 ?        00:00:11 /usr/lib/jvm/jre1.8.0_51/bin/java -Dagent-foreground=yes -Xmx128M -Djclouds.mpu.parts.magnitude=100000 -Djclouds.mpu.parts.size=1
root       494     0  0 06:05 ?        00:00:00 bash
root       761   494  0 06:05 ?        00:00:00 ps -ef

注意,runsv opscenter-agent (pid 33)启动一个子进程,它是一个带有子进程(pid 471)的bash调用(pid 38)。

然后我运行了sv stop opscenter-agentps -ef

代码语言:javascript
复制
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 06:05 ?        00:00:00 /usr/bin/python3 -u /sbin/my_init
root        27     1  0 06:05 ?        00:00:00 /usr/bin/runsvdir -P /etc/service
root        28    27  0 06:05 ?        00:00:00 runsv sshd
root        29    27  0 06:05 ?        00:00:00 runsv syslog-ng
root        30    27  0 06:05 ?        00:00:00 runsv cron
root        31    27  0 06:05 ?        00:00:00 runsv cassandra
root        32    27  0 06:05 ?        00:00:00 runsv syslog-forwarder
root        33    27  0 06:05 ?        00:00:00 runsv opscenter-agent
root        34    32  0 06:05 ?        00:00:00 tail -F -n 0 /var/log/syslog
root        35    30  0 06:05 ?        00:00:00 /usr/sbin/cron -f
root        36    29  0 06:05 ?        00:00:00 syslog-ng -F -p /var/run/syslog-ng.pid --no-caps
root        37    31 19 06:05 ?        00:00:11 java -ea -javaagent:/usr/share/cassandra/lib/jamm-0.3.0.jar -XX:+CMSClassUnloadingEnabled -XX:+UseThreadPriorities -XX:ThreadPrio
root       471     1 20 06:05 ?        00:00:11 /usr/lib/jvm/jre1.8.0_51/bin/java -Dagent-foreground=yes -Xmx128M -Djclouds.mpu.parts.magnitude=100000 -Djclouds.mpu.parts.size=1
root       494     0  0 06:05 ?        00:00:00 bash
root       768   494  0 06:06 ?        00:00:00 ps -ef

注pid 38已经消失,但是pid 471现在附加到my_init

这行为正确吗?我该怎么做才能收获孩子的过程呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-13 10:55:57

my_init采用孤立进程并获取它们。但你误解了“收获”的意思。my_init不让它退出;my_init只等待它退出。您(或该进程)仍然负责确保它退出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31668752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档