我感兴趣的是systemd如何跟踪子进程存在后剩余的主进程的子进程?
答案 0 :(得分:3)
Systemd正在使用cgroups。在启动使用服务文件定义的任何可执行文件之前,systemd创建一个cgroup并将可执行文件放入其中[*]。在那之后,cgroup中的进程分叉了多少子进程或多少次并不重要。对于systemd,它们都属于同一个cgroup。
另一件好事是,当父进程终止时,该父进程的子进程继承PID 1(systemd)作为其父进程。这是一个unix规则。
[]系统首先创建一个cgroup。然后将其自行分叉并将新进程放入此cgroup中。然后调用exec ()系列调用您的服务的ExecStart = binary。