Ho un demone di vecchia scuola che voglio controllare usando systemd. Quando il suo file di configurazione cambia, deve essere ucciso e riavviato. In altre parole, dopo aver modificato il file di configurazione, systemctl reload MYSERVICE
dovrebbe terminare il processo e riavviarlo.
Tentativo 1: provare le impostazioni predefinite. Questo dice a systemd come avviare il demone, ma non come ricaricarlo.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
Di conseguenza, start
e restart
funziona, ma reload
dà questo errore:
# systemctl reload MYSERVICE
Failed to reload MYSERVICE.service: Job type reload is not applicable for unit MYSERVICE.service.
Tentativo 2: spiegagli come terminare il processo. Questo uccide il processo ma systemd non lo riavvia per me.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
...seguito da...
# systemctl daemon-reload
# systemctl reload MYSERVICE
... termina il processo ma non si riavvia automaticamente.
Tentativo 3: utilizzare ExecReload per riavviare anche il processo. Questo non riesce per alcuni motivi:
ExecReload=/bin/kill -HUP $MAINPID ; /usr/bin/MYSERVICE
... il messaggio di errore che visualizzo ...:
# 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.
Mi aspetterei che ci sia un ReloadType = kill_and_restart o qualcosa del genere, ma nessuna tale fortuna.
Come dire a systemd di uccidere e riavviare un demone al caricamento?