Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 配置错误的systemd服务以通过SIGKILL终止大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

背景 我被要求为新服务foo_daemon创建一个systemd脚本,它有时会进入“坏状态”,并且不会通过SIGTERM死掉(可能是由于自定义信号处理程序).这对开发人员来说是有问题的,因为他们被指示通过以下方式启动/停止/重启服务: > systemctl start foo_daemon.service > systemctl stop foo_daemon.service > systemc
背景

我被要求为新服务foo_daemon创建一个systemd脚本,它有时会进入“坏状态”,并且不会通过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

如何为foo_daemon设置系统脚本,以便每当用户尝试停止/重新启动服务时,systemd将:

>尝试通过SIGTERM正常关闭foo_daemon.
>最多关闭/终止foo_daemon以完成2秒.
>如果进程仍处于活动状态,则尝试通过SIGKILL强制关闭foo_daemon(因此我们不存在PID被回收的风险,并且systemd会针对错误的PID发出SIGKILL).我们正在测试的设备迅速产生/分叉许多过程,so there is a rare but very real concern about PID recycling causing a problem.
>如果,在实践中,我只是对PID回收的偏执,我可以使用脚本只发出SIGKILL对进程的PID而不用担心杀死循环的PID.

解决方法

systemd已经支持这个开箱即用,它是 enabled by default.

您可能想要自定义的唯一事情是超时,您可以使用TimeoutStopSec =.例如:

[Service]
TimeoutStopSec=2

现在,systemd将发送一个SIGTERM,等待两秒钟让服务退出,如果没有,它将发送一个SIGKILL.

如果您的服务不支持systemd,则可能需要使用PIDFile =提供其PID文件的路径.

最后,您提到您的守护进程会产生许多进程.在这种情况下,您可能希望设置KillMode = control-group,systemd将向cgroup中的所有进程发送信号.

大佬总结

以上是大佬教程为你收集整理的linux – 配置错误的systemd服务以通过SIGKILL终止全部内容,希望文章能够帮你解决linux – 配置错误的systemd服务以通过SIGKILL终止所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: