Comment redémarrer un service Systemd lors d'un changement de fichier. J'ai un service Java que je veux recharger quand un fichier jar change.
Voici ma configuration:
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/
J'ai également essayé d'utiliser PathChanged
et d'utiliser un fichier à la place d'un répertoire.
Lorsque j'ai installé le service, j'ai exécuté: sudo systemctl daemon-reload
et sudo systemctl enable srv
Merci!
path
unités ne sont utiles que pour activer (démarrer) d'autres unités. Ici, vous pourriez probablement créersrv-restart.path
avecPathChanged=/opt/srv/lib/
etsrv-restart.service
avecExecStart=systemctl restart srv.service
.srv.path
ne peut faire que l'équivalent desystemclt start srv.service
, donc pour automatiser les redémarrages, vous aurez besoin d'un autre service qui, une fois démarré, redémarre votre service.systemctl start srv.path
- et le faire démarrer au démarragesystemctl preset srv.path
Réponses:
Le commentaire de Michal Politowski est exactement correct. J'utilise cette méthode pour redémarrer automatiquement les services lorsque de nouveaux artefacts sont déployés. C'est très utile.
Pour être clair, vous avez besoin de:
srv.service
srv-watcher.service
srv-watcher.path
la source
systemctl enable srv-watcher.path && systemctl start srv-watcher.path
.path
fichier, ajoutez simplementUnit=nameofmyrestart.service
à la[Path]
section de votre.path
fichier. freedesktop.org/software/systemd/man/systemd.path.html#Unit=