linux – 配置错误的systemd服务以通过SIGKILL终止
背景
我被要求为新服务foo_daemon创建一个systemd脚本,它有时会进入“坏状态”,并且不会通过SIGTERM死掉(可能是由于自定义信号处理程序).这对开发人员来说是有问题的,因为他们被指示通过以下方式启动/停止/重启服务: > systemctl start foo_daemon.service 问题 有时候,由于foo_daemon进入了糟糕的状态,我们必须通过以下方式强行杀死它: > systemctl kill -s KILL foo_daemon.service 题 如何为foo_daemon设置系统脚本,以便每当用户尝试停止/重新启动服务时,systemd将: >尝试通过SIGTERM正常关闭foo_daemon. 解决方法
systemd已经支持这个开箱即用,它是
enabled by default.
您可能想要自定义的唯一事情是超时,您可以使用TimeoutStopSec =.例如: [Service] TimeoutStopSec=2 现在,systemd将发送一个SIGTERM,等待两秒钟让服务退出,如果没有,它将发送一个SIGKILL. 如果您的服务不支持systemd,则可能需要使用PIDFile =提供其PID文件的路径. 最后,您提到您的守护进程会产生许多进程.在这种情况下,您可能希望设置KillMode = control-group,systemd将向cgroup中的所有进程发送信号. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |