У меня 3 услуги:
Ожидаемое поведение
Все это отлично работает на:
Эта проблема
Это делает не работа над:
В Debian 8, если я повторнозапустить ParentService, когда DependentServiceA не работает, DependentServiceA все равно запускается. Это не происходит, если только начало ParentService.
Я прикрепил свои файлы systemd ниже для просмотра. Я почти уверен, что это проблема в модульном файле DependentServiceA, но признаю, что не полностью понимаю всех различий между директивами зависимостей systemd (например, BindsTo, PartOf, WantedBy).
ParentService
[Unit]
Description=Parent service
BindsTo=network.target
After=network.target
Before=soss_svc_rest.service dependent_service_b.service
[Service]
Type=forking
ExecStart=/usr/local/foobar/parent_service
KillMode=process
Restart=on-failure
PIDFile=/var/run/parent_service.pid
[Install]
WantedBy=multi-user.target
WantedBy=dependent_service_a.service
DependentServiceA
[Unit]
Description=Dependent Service A
BindsTo=network.target
After=network.target
After=parent_service.service
BindsTo=parent_service.service
PartOf=parent_service.service
[Service]
Type=forking
PIDFile=/var/run/dependent_service_a.pid
ExecStart=/usr/local/foobar/dependent_service_a
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
DependentServiceB
[Unit]
Description=Dependent Service B
BindsTo=network.target
After=network.target
After=parent_service.service
[Service]
Type=forking
PIDFile=/var/run/dependent_service_b.pid
ExecStart=/usr/local/foobar/dependent_service_b
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Если это актуально, ParentService и DependentServiceB помечены как включен (Я хочу, чтобы они запускались при запуске системы), но для DependentServiceA установлено значение отключен по умолчанию и должен быть явно запущен и / или установлен на включен пользователем для запуска при запуске системы.
Что я неправильно настроил в моих файлах модулей systemd, из-за чего DependentServiceA запускается, когда он ранее не запускался при перезапуске ParentService? И почему это происходит только в Debian 8, но ни в одном из других дистрибутивов, которые я тестировал? Это ошибка в системе Debian 8 (выпуск 215), которая была исправлена между версиями 216 и 219? (Я не видел ничего значимого в истории выпусков systemd.)