Як перезапустити службу 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 однак ... я не знаю якщо він лише запускає послугу або навіть перезапускає її, якщо вона вже працює
—
заклинання
Як я розумію з документів,
—
Michał Politowski
srv.path
можна виконати лише еквівалент systemclt start srv.service
, тому для автоматичного перезавантаження вам знадобиться інша послуга, яка при запуску перезапускає вашу службу.
Ви повинні почати її
—
Michael D.
systemctl start srv.path
- і , щоб він почав на черевикуsystemctl preset srv.path
Відповідно: github.com/systemd/systemd/isissue/4324
—
Michał Politowski
path
блоки корисні лише для активації (запуску) інших блоків. Тут ви, мабуть, могли б створити заsrv-restart.path
допомогоюPathChanged=/opt/srv/lib/
та заsrv-restart.service
допомогоюExecStart=systemctl restart srv.service
.