У мене є старий шкільний демон, який я хочу контролювати за допомогою 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 вбити та перезапустити демон при перезавантаженні?