J'ai un démon à l'ancienne que je veux contrôler en utilisant systemd. Lorsque son fichier de configuration change, il doit être tué et redémarré. En d'autres termes, après avoir modifié le fichier de configuration, systemctl reload MYSERVICE
vous devez arrêter le processus et le redémarrer.
Tentative 1: essayez les valeurs par défaut. Cela indique à systemd comment démarrer le démon, mais pas comment le recharger.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
En conséquence, start
et restart
travailler, mais reload
donne cette erreur:
# systemctl reload MYSERVICE
Failed to reload MYSERVICE.service: Job type reload is not applicable for unit MYSERVICE.service.
Tentative 2: dites-lui comment tuer le processus. Cela tue le processus mais systemd ne le redémarre pas pour moi.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
...suivi par...
# systemctl daemon-reload
# systemctl reload MYSERVICE
... tue le processus mais il n'est pas redémarré automatiquement.
Tentative 3: utilisez également ExecReload pour redémarrer le processus. Cela échoue pour plusieurs raisons:
ExecReload=/bin/kill -HUP $MAINPID ; /usr/bin/MYSERVICE
... le message d'erreur que j'obtiens ...:
# systemctl daemon-reload
# systemctl reload MYSERVICE
Job for MYSERVICE.service failed because the control process exited with error code. See "systemctl status MYSERVICE.service" and "journalctl -xe" for details.
Je m'attendrais à ce qu'il y ait un ReloadType = kill_and_restart ou quelque chose mais pas de chance.
Comment dire à systemd de tuer et de redémarrer un démon lors du rechargement?