gpt4 book ai didi

redhat - systemd `systemctl stop`积极杀死子进程

转载 作者:行者123 更新时间:2023-12-04 13:57:32 29 4
gpt4 key购买 nike

我有一个类似守护程序的进程,它启动了两个子进程(其中一个子进程启动了约10个其他子进程)。当我对自己的进程进行systemctl stop编码时,子子进程似乎被systemctl“积极地”杀死了,这使我的进程没有机会清理。

如何获得systemctl stop退出积极的杀戮,从而使我的流程能够安排有序的清理工作?

我尝试timeoutSec=30无济于事。

最佳答案

KillMode= [1]默认为control-group。这意味着您的服务的每个过程都将被SIGTERM杀死。

您有两种选择:

  • 处理每个过程中的SIGTERM,并在TimeoutStopSec(默认为90秒[2])内关闭
  • 如果您确实要从主进程中委派关闭,请设置KillMode=mixed。 SIGTERM将仅发送到主进程。然后在TimeoutStopSec内再次关闭。如果您未在TimeoutStopSec内关闭,则systemd会将SIGKILL发送到您的所有进程。

  • 注意:我建议在选项2中使用 KillMode=mixed而不是 KillMode=process,因为后者会将最终的 SIGKILL仅发送到您的主进程,这意味着子进程锁定后不会被杀死。

    [1] https://www.freedesktop.org/software/systemd/man/systemd.kill.html#KillMode=

    [2] https://www.freedesktop.org/software/systemd/man/systemd-system.conf.html#DefaultTimeoutStartSec=

    关于redhat - systemd `systemctl stop`积极杀死子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40898077/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com