Systemd 为此使用 cgroup。在启动使用服务文件定义的任何可执行文件之前,systemd 会创建一个 cgroup 并将可执行文件放入其中[*]。此后,cgroup 中的进程有多少个子进程或 fork 多少次都不再重要。对于systemd来说,它们都属于同一个cgroup。
另一件值得知道的好事情是,当父进程终止时,该父进程的子进程将继承 PID 1 (systemd) 作为其父进程。这是unix规则。
[ ] 系统首先创建一个cgroup。然后自行分叉并将新进程放入此 cgroup 中。然后调用exec ()族调用你的服务的ExecStart=二进制文件。