2
配置越野车systemd服务以通过SIGKILL终止
背景 我被要求systemd为新服务创建脚本,该脚本foo_daemon有时会进入“不良状态”,并且不会通过SIGTERM(可能由于自定义信号处理程序而)消失。这对开发人员来说是个问题,因为他们被指示通过以下方式启动/停止/重新启动服务: systemctl start foo_daemon.service systemctl stop foo_daemon.service systemctl restart foo_daemon.service 问题 有时,由于foo_daemon进入不良状态,我们必须通过以下方式强行杀死它: systemctl kill -s KILL foo_daemon.service 题 我如何设置我的systemd脚本,foo_daemon以便每当用户尝试停止/重新启动服务时,systemd都会: 尝试正常关闭foo_daemonvia SIGTERM。 最多需要2秒foo_daemon才能完成关机/终止操作。 如果该进程仍然存在,请尝试强制关闭foo_daemonvia SIGKILL(这样我们就不会有PID被回收的风险,也不会出现针对错误PID的systemd问题SIGKILL)。我们正在测试的设备迅速产生/分叉了许多过程,因此,对于PID回收引起问题的问题很少,但确实存在。 如果实际上,我只是对PID回收抱有偏执,那么我可以接受脚本,只是SIGKILL针对进程的PID 发出脚本,而不必担心杀死回收的PID。