16

Как перезапустить службу 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

Спасибо!

1 ответ1

11

Комментарий Михала Политовски совершенно прав. Я использую этот метод для автоматического перезапуска служб при развертывании новых артефактов. Это очень полезно.

Чтобы было понятно, нужно:

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-watcher.service

[Unit]
Description=srv restarter
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart srv.service

[Install]
WantedBy=multi-user.target

SRV-watcher.path

[Path]
PathModified=/opt/srv/lib

[Install]
WantedBy=multi-user.target

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .