Ich habe einen Old-School-Daemon, den ich mit systemd steuern möchte. Wenn sich die Konfigurationsdatei ändert, muss sie beendet und neu gestartet werden. Mit anderen Worten, nach dem Bearbeiten der Konfigurationsdatei systemctl reload MYSERVICE
sollte der Prozess abgebrochen und neu gestartet werden.
Versuch 1: Probieren Sie die Standardeinstellungen aus. Dies teilt systemd mit, wie der Dämon gestartet werden soll, nicht jedoch, wie er neu geladen werden soll.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
Als Ergebnis start
und restart
Arbeit, aber reload
gibt diesen Fehler:
# systemctl reload MYSERVICE
Failed to reload MYSERVICE.service: Job type reload is not applicable for unit MYSERVICE.service.
Versuch 2: Sagen Sie, wie der Prozess abgebrochen werden soll. Dies beendet den Prozess, aber systemd startet ihn für mich nicht neu.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
...gefolgt von...
# systemctl daemon-reload
# systemctl reload MYSERVICE
... beendet den Prozess, wird jedoch nicht automatisch neu gestartet.
Versuch 3: Verwenden Sie ExecReload, um den Prozess ebenfalls neu zu starten. Dies schlägt aus mehreren Gründen fehl:
ExecReload=/bin/kill -HUP $MAINPID ; /usr/bin/MYSERVICE
... die Fehlermeldung, die ich bekomme ...:
# 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.
Ich würde erwarten, dass es einen ReloadType = kill_and_restart gibt oder so, aber kein solches Glück.
Wie kann man systemd anweisen, einen Daemon beim Neuladen zu töten und neu zu starten?