Ошибка зависимости Systemctl, остановите зависимые службы

У меня есть 2 услуги a.service и b.service. а. показано обслуживание

[Unit]
Description=My service

[Service]
Type=forking
ExecStart=/bin/sh /home/admin/run.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target,

б. сервис

[Unit]
Description=My service

[Service]
Type=forking
ExecStart=/bin/sh $HOME/theFolder/run.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

Теперь, когда я запускаю b.service, я уверен, что a.service будет запущен. Во время выполнения внезапно кто-то испортил /home/admin/run.sh, и systemd не может запустить a.service (также статус systemctl a.service показывает сбой как статус). Теперь есть возможность, чтобы b.service мог знать, что a.service не работает, и должен остановиться / выйти?


person vadiraj jahagirdar    schedule 10.03.2017    source источник
comment
BindsTo = a.service   -  person Oleksandr Kravchuk    schedule 10.03.2017


Ответы (1)


Вы хотите добавить BindsTo= или Requires= в свой [Unit] раздел, как описано в man systemd.unit:

Requires = Настраивает зависимости требований от других модулей. Если этот отряд активируется, перечисленные здесь юниты также будут активированы. Если один из других блоков будет деактивирован или его активация не удастся, это устройство будет деактивировано. Эта опция может быть указана более одного раза или несколько единиц, разделенных пробелами, могут быть указаны в одной опции, и в этом случае будут созданы зависимости требований для всех перечисленных имен. Обратите внимание, что зависимости требований не влияют на порядок, в котором службы запускаются или останавливаются. Это должно быть настроено независимо с опциями After = или Before =. Если для модуля foo.service требуется модуль bar.service, сконфигурированный с помощью Requires =, а порядок не настроен с помощью After = или Before =, то оба модуля будут запущены одновременно и без какой-либо задержки между ними, если foo.service активирован. Часто лучше использовать Wants = вместо Requires =, чтобы получить более надежную систему при работе с отказавшими службами.

BindsTo = Настраивает зависимости требований, очень похожие по стилю на Requires =, однако в дополнение к этому поведению он также объявляет, что этот модуль останавливается, когда любой из перечисленных модулей внезапно исчезает. Модули могут внезапно, неожиданно исчезнуть, если служба завершается по своему выбору, устройство отключено или точка монтирования отключена без участия systemd.

person Mark Stosberg    schedule 10.03.2017