Как systemd отслеживает процесс разветвления с помощью Type = fork - PullRequest
0 голосов
/ 07 июня 2018

Меня интересует, как systemd отслеживает дочерний элемент основного процесса, который остается после того, как основной процесс существует?

1 Ответ

0 голосов
/ 08 июня 2018

Systemd использует cgroups для этого.Перед запуском любого исполняемого файла, определенного в служебном файле, systemd создает группу и помещает в нее исполняемый файл [*].После этого не имеет значения, сколько дочерних процессов или сколько раз процессы в cgroup разветвлялись.Для systemd все они принадлежат одной и той же группе.

Еще одна полезная вещь: когда родительский процесс умирает, дочерние процессы этого родительского процесса наследуют PID 1 (systemd) как их родительский процесс.Это правило Unix.

[] Система сначала создает группу.Затем разветвляется и помещает новый процесс в эту группу.Затем вызывает exec () семейство вызовов для ExecStart = двоичного файла вашего сервиса.

...