首页 > 解决方案 > systemd 如何使用 Type=fork 跟踪 fork 进程

问题描述

我很感兴趣 systemd 如何跟踪主进程存在后仍然存在的主进程的子进程?

标签: forksystemd

解决方案


Systemd 正在为此使用 cgroups。在启动任何使用服务文件定义的可执行文件之前,systemd 创建一个 cgroup 并将可执行文件放入其中 [*]。之后,无论有多少子进程或 cgroup 中的进程分叉了多少次,都无关紧要。对于 systemd,它们都属于同一个 cgroup。

要知道的另一件好事是,当父进程死亡时,该父进程的子进程继承 PID 1 (systemd) 作为其父进程。这是一个 Unix 规则。

[ ] 系统首先创建一个 cgroup。然后将它自己分叉并将新进程放在这个 cgroup 中。然后为您的服务的 ExecStart= 二进制调用 exec () 族调用。


推荐阅读