У меня есть демон старой школы, которым я хочу управлять с помощью systemd. Когда его конфигурационный файл изменяется, его нужно убить и перезапустить. Другими словами, после редактирования файла конфигурации, systemctl reload MYSERVICE
следует завершить процесс и перезапустить его.
Попытка 1: попробуйте значения по умолчанию. Это сообщает systemd, как запустить демон, а не как его перезагрузить.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
В результате start
и restart
работает, но reload
выдает эту ошибку:
# systemctl reload MYSERVICE
Failed to reload MYSERVICE.service: Job type reload is not applicable for unit MYSERVICE.service.
Попытка 2: Расскажите, как убить процесс. Это убивает процесс, но systemd не перезапускает его для меня.
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
...с последующим...
# systemctl daemon-reload
# systemctl reload MYSERVICE
... убивает процесс, но он не перезапускается автоматически.
Попытка 3: используйте ExecReload, чтобы перезапустить процесс тоже. Это терпит неудачу по нескольким причинам:
ExecReload=/bin/kill -HUP $MAINPID ; /usr/bin/MYSERVICE
... сообщение об ошибке я получаю ...:
# 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.
Я ожидаю, что там будет ReloadType = kill_and_restart или что-то, но не такая удача.
Как сказать systemd убить и перезапустить демон при перезагрузке?