Задать вопрос
@Dannerty

Как правильно написать Unit systemd?

Подскажите, как правильно написать юнита, чтоб он запускал скрипт при выключении\перезагрузке\сне?
Сейчас написано так
[Unit]
 Before=hibernate.target hybrid-sleep.target suspend.target shutdown.target poweroff.target
 After=network.target

[Service]
 Type=oneshot
 ExecStart=/bin/bash -c "/etc/init.d/zabbix-4shutdown.script stop"
 RemainAfterExit=true

[Install]
 WantedBy=graphical.target

Но он не срабатывает при выключении. Если сделать systemctl restart myservice, то скрипт запускается и выполняется. Подозреваю, что ошибка в блоке Install, делал с multi-user.target, shutdown.target, но тоже не срабатывало.

UPD.

Выяснилось, что не совсем верно работает все.
Прописал
[Unit]
 Before=shutdown.target poweroff.target
 Conflicts=reboot.target
 Requires=network.target

[Service]
 Type=oneshot
 ExecStop=/bin/bash -c "/etc/init.d/zabbix_4shutdown.script stop"
 RemainAfterExit=true

[Install]
 WantedBy=network.target


И скрипт все равно запускается при перезагрузке, но запускается так, что ничего не может отправить, т.к. либо сеть уже отключилась, либо openvpn отрубается раньше, чем запуск скрипта происходит. Мне необходимо разные скрипты запускать при выключении и при перезагрузке, но почему-то Conflicts\Before неправильно обрабатываются.
Можно ли привязать к WantedBy=openvpn или что-то такое?
  • Вопрос задан
  • 703 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
Да я тоже с этим сталкивался.
Не могу сейчас точно вспомнить, что получилось, но можно попробовать:
Requires=graphical.target
тогда его будет вырубать когда вырубают graphical.target.
Или еще к чему более разумному прицепиться.
Скажем к network.target.
Без сети то zabbix точно не нужен.
Ответ написан
@pfg21
ex-турист
Тут предлагают засовывать скрипт в ExecStop.

[Unit]
Description=...

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop="your script/program"

[Install]
WantedBy=multi-user.target
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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