Задача:
Решение:
restart-myservice.service
restart-myservice.path
Не забудьте сказать
Ограничения:
Юнит path работает через системный вызов notify, и если флаг по пути с симлинком, то при перестановке симлинка (был на каталог без флага, стал с флагом) он скорее всего не выстрелит, я не проверял.
Дополнительные материалы:
- имеется некий самописный сервис, запускаемый и отслеживаемый из systemd;
- необходимо при появлении файла-флага рестартовать этот сервис;
- делать это изнутри сервиса нельзя по религиозным соображениям.
Решение:
restart-myservice.service
[Unit] Description=Restart my cool service [Service] Type=oneshot ExecStartPre=/bin/rm -f /path/to/restart.flag ExecStart=/bin/systemctl restart myservice.service
restart-myservice.path
[Unit] Description=Path marker to restart my cool service [Path] PathExists=/path/to/restart.flag Unit=restart-myservice.service
Не забудьте сказать
systemctl start restart-myservice.path и прописать restart-myservice.path в параметр Wants управляемого сервиса.Ограничения:
Юнит path работает через системный вызов notify, и если флаг по пути с симлинком, то при перестановке симлинка (был на каталог без флага, стал с флагом) он скорее всего не выстрелит, я не проверял.
Дополнительные материалы:
man systemd.pathman systemd.unit