Comment redémarrer un service Systemd lorsqu'un fichier est modifié. J'ai un service Java que je veux recharger quand un fichier JAR est modifié.
Ceci est 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 aussi essayé d'utiliser PathChanged
et d'utiliser un fichier à la place d'un répertoire.
Quand j'ai installé le service, j'ai exécuté: Sudo systemctl daemon-reload
et Sudo systemctl enable srv
Merci!
Le commentaire de Michal Politowski est tout à fait 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
[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