Как перезапустить службу 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), файл пути ссылается на тот же сервис: freedesktop.org/software/systemd/man/systemd.path.html однако ... Я не знаю если он только запускает службу или даже перезапускает ее, если она уже запущена
—
глушение
Как я понял из документации,
—
Михал Политовски,
srv.path
можно сделать только эквивалент systemclt start srv.service
, поэтому для автоматизации перезапусков вам понадобится другой сервис, который при запуске перезапускает ваш сервис.
Вы должны начать это
—
Майкл Д.
systemctl start srv.path
- и чтобы это началось при загрузкеsystemctl preset srv.path
Соответствующий: github.com/systemd/systemd/issues/4324
—
Михал Политовски
path
модули полезны только для активации (запуска) других модулей. Здесь вы, вероятно, могли бы создатьsrv-restart.path
сPathChanged=/opt/srv/lib/
иsrv-restart.service
сExecStart=systemctl restart srv.service
.