Tengo un demonio de la vieja escuela que quiero controlar usando systemd. Cuando su archivo de configuración cambia, debe ser eliminado y reiniciado. En otras palabras, después de editar el archivo de configuración, systemctl reload MYSERVICE
debería eliminar el proceso y reiniciarlo.
Intento 1: pruebe los valores predeterminados. Esto le dice a systemd cómo iniciar el demonio, pero no cómo volver a cargarlo.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
Como resultado, start
y restart
funciona, pero reload
da este error:
# systemctl reload MYSERVICE
Failed to reload MYSERVICE.service: Job type reload is not applicable for unit MYSERVICE.service.
Intento 2: dígale cómo matar el proceso. Esto mata el proceso pero systemd no lo reinicia por mí.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
...seguido por...
# systemctl daemon-reload
# systemctl reload MYSERVICE
... mata el proceso pero no se reinicia automáticamente.
Intento 3: Use ExecReload para reiniciar el proceso también. Esto falla por algunas razones:
ExecReload=/bin/kill -HUP $MAINPID ; /usr/bin/MYSERVICE
... el mensaje de error que recibo ...:
# 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.
Esperaría que hubiera un ReloadType = kill_and_restart o algo así, pero no tuve tanta suerte.
¿Cómo decirle a systemd que mate y reinicie un demonio en la recarga?