在 PID/NET 命名空间中作为唯一子进程运行 HTTP 进程

在 PID/NET 命名空间中作为唯一子进程运行 HTTP 进程

第一次在这里发帖,感谢您的帮助和耐心。在阅读了有关命名空间的内容后,查看了各种论坛,包括线程和反复试验我仍在寻找我需要完成的任务(而不是生产实现)的答案。

我需要创建一个命名空间,其中 HTTP 进程是唯一在其中运行的进程。如果该 HTTP 进程终止,则名称空间中包含的 HTTP 进程也应该终止,因为这是名称空间的自然行为(除非bind-mount使用)。这应该使用命令来实现unshare

我尝试了各种方法来实现它,最好的情况是我在 5 秒内得到了所需的结果,直到我的 PID 命名空间中包含的 HTTP 进程被转储到全局init,从而杀死了它所在的命名空间。我知道这是 apache 的默认行为,但是为什么主 apache 进程不附加到initPID 命名空间内的进程?

我使用的是运行util-linux2.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选项可用性方面缺少什么吗?

相关内容