Bagaimana cara memulai kembali layanan Systemd ketika file berubah. Saya punya layanan Java yang ingin saya muat ulang ketika ada perubahan file jar.
Ini adalah pengaturan saya:
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/
Saya juga mencoba menggunakan PathChanged
dan menggunakan file, bukan direktori.
Ketika saya menginstal layanan yang saya jalankan: sudo systemctl daemon-reload
dan sudo systemctl enable srv
Terima kasih!
path
unit hanya berguna untuk mengaktifkan (memulai) unit lain. Di sini Anda mungkin dapat membuatsrv-restart.path
denganPathChanged=/opt/srv/lib/
dansrv-restart.service
denganExecStart=systemctl restart srv.service
.srv.path
hanya bisa melakukan yang setarasystemclt start srv.service
, jadi untuk mengotomatiskan restart Anda akan memerlukan layanan lain, yang ketika mulai me-restart layanan Anda.systemctl start srv.path
- dan memulainya saat bootsystemctl preset srv.path
Jawaban:
Komentar Michal Politowski benar. Saya menggunakan metode ini untuk memulai kembali layanan secara otomatis ketika artefak baru digunakan. Ini sangat membantu.
Agar jelas, Anda perlu:
srv.service
srv-watcher.service
srv-watcher.path
sumber
systemctl enable srv-watcher.path && systemctl start srv-watcher.path
.path
file maka tambahkan sajaUnit=nameofmyrestart.service
ke[Path]
bagian.path
file Anda . freedesktop.org/software/systemd/man/systemd.path.html#Unit=