Eu tenho um daemon da velha escola que quero controlar usando o systemd. Quando o arquivo de configuração é alterado, ele precisa ser eliminado e reiniciado. Em outras palavras, depois de editar o arquivo de configuração, systemctl reload MYSERVICE
deve interromper o processo e reiniciá-lo.
Tentativa 1: tente os padrões. Isso diz ao systemd como iniciar o daemon, mas não como recarregá-lo.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
Como resultado, start
e restart
trabalho, mas reload
dá este erro:
# systemctl reload MYSERVICE
Failed to reload MYSERVICE.service: Job type reload is not applicable for unit MYSERVICE.service.
Tentativa 2: Diga como matar o processo. Isso mata o processo, mas o systemd não o reinicia para mim.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
...Seguido por...
# systemctl daemon-reload
# systemctl reload MYSERVICE
... mata o processo, mas ele não é reiniciado automaticamente.
Tentativa 3: Use ExecReload para reiniciar o processo também. Isso falha por alguns motivos:
ExecReload=/bin/kill -HUP $MAINPID ; /usr/bin/MYSERVICE
... a mensagem de erro recebida ...:
# 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.
Eu esperaria que houvesse um ReloadType = kill_and_restart ou algo assim, mas sem essa sorte.
Como dizer ao systemd para matar e reiniciar um daemon ao recarregar?