Jak zrestartować usługę Systemd po zmianie pliku. Mam usługę Java, którą chcę ponownie załadować, gdy zmieni się jakikolwiek plik jar.
Oto moja konfiguracja:
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/
Próbowałem także użyć PathChanged
pliku zamiast katalogu.
Po zainstalowaniu usługi wykonałem: sudo systemctl daemon-reload
i sudo systemctl enable srv
Dzięki!
path
jednostki są użyteczne tylko do aktywacji (uruchamiania) innych jednostek. Tutaj można prawdopodobnie tworzyćsrv-restart.path
sięPathChanged=/opt/srv/lib/
isrv-restart.service
zExecStart=systemctl restart srv.service
.srv.path
mogę zrobić tylko odpowiedniksystemclt start srv.service
, więc do automatyzacji restartów będziesz potrzebować innej usługi, która po uruchomieniu ponownie uruchomi twoją usługę.systemctl start srv.path
- i uruchomić przy starciesystemctl preset srv.path
Odpowiedzi:
Komentarz Michała Politowskiego jest dokładnie poprawny. Używam tej metody do automatycznego restartowania usług po wdrożeniu nowych artefaktów. To bardzo pomocne.
Żeby było jasne, potrzebujesz:
srv.service
srv-watcher.service
srv-watcher.path
źródło
systemctl enable srv-watcher.path && systemctl start srv-watcher.path
.path
plik, po prostu dodajUnit=nameofmyrestart.service
do[Path]
sekcji.path
pliku. freedesktop.org/software/systemd/man/systemd.path.html#Unit=