我被要求systemd为新服务创建一个脚本,该脚本foo_daemon有时会进入“不良状态”,并且不会通过SIGTERM(可能是由于自定义信号处理程序)而死亡。这对开发人员来说是有问题的,因为他们被指示通过以下方式启动/停止/重新启动服务:
systemctl start foo_daemon.servicesystemctl stop foo_daemon.servicesystemctl restart foo_daemon.service有时,由于foo_daemon进入不良状态,我们不得不通过以下方式强行杀死它:
systemctl kill -s KILL foo_daemon.service我如何设置我的systemd脚本,foo_daemon以便每当用户尝试停止/重新启动服务时,systemd将:
foo_daemonvia SIGTERM。foo_daemon来完成关闭/终止。foo_daemon,SIGKILL则尝试强制关闭via (因此我们没有 PID 被回收的风险以及错误 PID 的systemd问题SIGKILL)。我们正在测试的设备会快速生成/分叉多个进程,因此对于 PID 回收导致问题存在罕见但非常真实的担忧。SIGKILL针对进程的 PID发出,而不必担心杀死回收的 PID。