第一次在这里发帖,感谢您的帮助和耐心。在阅读了有关命名空间的内容后,查看了各种论坛,包括这线程和反复试验我仍在寻找我需要完成的任务(而不是生产实现)的答案。
我需要创建一个命名空间,其中 HTTP 进程是唯一在其中运行的进程。如果该 HTTP 进程终止,则名称空间中包含的 HTTP 进程也应该终止,因为这是名称空间的自然行为(除非bind-mount
使用)。这应该使用命令来实现unshare
。
我尝试了各种方法来实现它,最好的情况是我在 5 秒内得到了所需的结果,直到我的 PID 命名空间中包含的 HTTP 进程被转储到全局init
,从而杀死了它所在的命名空间。我知道这是 apache 的默认行为,但是为什么主 apache 进程不附加到init
PID 命名空间内的进程?
我使用的是运行util-linux
2.24.2 的 Fedora 20,因此--fork
支持--mount-proc
选项。
更新1:我尝试过使用网络命名空间但无法找到一种方法来仅保留一个进程 httpd 作为命名空间的子进程。
搬到pid命名空间。我在用着
unshare –fp --mount-proc -- /usr/sbin/httpd –k start –DFOREGROUND
第一次效果很好。 httpd 进程作为命名空间的唯一子进程运行。当我杀死孩子时,父亲就死了,这就是我想要的。如果我重复相同的命令,我就会开始发现可能是选项导致的问题--mount-proc
。我在--mount-proc
选项可用性方面缺少什么吗?