Как systemd обрабатывает смерть дочернего управляемого процесса?

С sh scriptname.sh , вы запускаете его с sh , не обязательно с bash . Попробуйте сравнить sh --version на обеих машинах. И / или с dpkg -S $ (который sh) .

6
28.09.2016, 19:04
2 ответа

Нет.

Главный процесс обрабатывает смерть своих детей обычным образом.

Это мир POSIX. Если процесс A разветвил B, а процесс B разветвил C, D и E; тогда процесс B - это то, что видит статус SIGCHLD и wait () после завершения C, D и E. Процесс A не знает, что происходит с C, D и E , и это независимо от systemd.

Чтобы A узнал об окончании C, D и E, должны произойти две вещи.

(Можно поумнеть с kevent () на BSD. Но это вопрос Linux.)

5
27.01.2020, 20:28

systemd имеет понятие главного процесса.В документации systemd это называется «основным процессом службы» или просто «основным процессом».

Пример 4 в документации по systemd.service описывает вычисление основного процесса, когда Type = разветвление .

Документация для Restart = в документации systemd.service описывает различные возможности запуска службы по отношению к основному процессу.

Вот ключевой текст из «примера 4», ссылка на который приведена выше:

systemd будет считать, что служба находится в процессе инициализации , в то время как исходная программа все еще выполняется. После успешного завершения и сохранения хотя бы одного процесса (и RemainAfterExit = no) служба считается запущенной.

Часто традиционный демон состоит только из одного процесса. Следовательно, , если после завершения исходного процесса остается только один процесс, systemd будет считать этот процесс основным процессом службы. В этом случае переменная $ MAINPID будет доступна в ExecReload =, ExecStop = и т. Д.

Если осталось более одного процесса, systemd не сможет {{1} } определить основной процесс, поэтому он не будет предполагать, что он есть. В этом случае $ MAINPID не будет расширяться ни во что. Однако, если процесс решит записать традиционный файл PID, systemd сможет прочитать оттуда основной PID. Пожалуйста, установите PIDFile = соответственно.

3
27.01.2020, 20:28

Теги

Похожие вопросы