我有一个老式的守护程序,我想使用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在重新加载时杀死并重新启动守护进程?