Как перезапустить службу Systemd при изменении файла. У меня есть Java-сервис, который я хочу перезагрузить при изменении любого файла JAR.
Это моя установка:
srv.service
[Unit]
Description=srv 0.1: Service's description
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/srv
ExecStart=/opt/srv/bin/srv
User=root
Group=root
[Install]
WantedBy=multi-user.target
srv.path
[Path]
PathModified=/opt/srv/lib/
Я также попытался использовать PathChanged
и использовать файл вместо каталога.
Когда я установил сервис, я выполнил: sudo systemctl daemon-reload
и sudo systemctl enable srv
Благодарность!
path
модули полезны только для активации (запуска) других модулей. Здесь вы, вероятно, могли бы создатьsrv-restart.path
сPathChanged=/opt/srv/lib/
иsrv-restart.service
сExecStart=systemctl restart srv.service
.srv.path
можно сделать только эквивалентsystemclt start srv.service
, поэтому для автоматизации перезапусков вам понадобится другой сервис, который при запуске перезапускает ваш сервис.systemctl start srv.path
- и чтобы это началось при загрузкеsystemctl preset srv.path
Ответы:
Комментарий Михала Политовски совершенно прав. Я использую этот метод для автоматического перезапуска служб при развертывании новых артефактов. Это очень полезно.
Чтобы было понятно, нужно:
srv.service
SRV-watcher.service
SRV-watcher.path
источник
systemctl enable srv-watcher.path && systemctl start srv-watcher.path
.path
файла, просто добавьтеUnit=nameofmyrestart.service
в[Path]
раздел вашего.path
файла. freedesktop.org/software/systemd/man/systemd.path.html#Unit=