当前位置: 首页 > 文档资料 > systemd 中文手册 >

systemd.kill 中文手册

优质
小牛编辑
140浏览
2023-12-01

名称

systemd.kill — 配置如何杀死进程

大纲

service.service,socket.socket,mount.mount,swap.swap,scope.scope

描述

service, socket, mount, swap, scope单元都拥有一组如何杀死进程的配置选项(亦称"配置指令"或"单元属性")。

本手册页列出并解释了上述五种类型的单元所共有的配置选项。参见systemd.unit(5)以了解所有类型的单元所共有的配置选项,而systemd.service(5),systemd.socket(5),systemd.swap(5),systemd.mount(5), systemd.scope(5)则分别说明了各单元所独有的配置选项。

根据单元类型的不同,本手册页列出的共有选项(亦称"指令"或"属性")分别位于单元文件的 [Service], [Socket], [Mount], [Swap] 小节。

选项

KillMode=

设置在单元停止时,杀死进程的方法。取值范围如下: control-group, process, mixed, none

control-group 表示杀死该单元的 cgroup 内的所有进程(对于 service 单元,还要先执行 ExecStop= 动作)。process 表示仅杀死主进程。mixed 表示首先向主进程发送 SIGTERM 信号(见下文),然后再向该单元的 cgroup 内的所有其他进程发送 SIGKILL 信号(见下文)。none 表示仅执行 ExecStop= 动作,而不杀死任何进程。这会导致即使单元已经停止,但是该单元的 cgroup 依然一直存在,直到其中的进程 全部死亡。

杀死进程的时候,第一步首先使用 KillSignal= 信号(默认为 SIGTERM) (如果 SendSIGHUP=yes ,那么还会立即紧跟一个 SIGHUP 信号),若等候 TimeoutStopSec= 时间后,进程仍然未被杀死,则继续第二步使用 SIGKILLFinalKillSignal= 信号(除非 SendSIGKILL=no)强制杀死。详见 kill(2) 手册。

默认值是 control-group

KillSignal=

设置 杀死进程的第一步 使用什么信号(见上文)。所有可用的信号详见 signal(7) 手册。默认值为 SIGTERM 信号。

注意,systemd 会无条件的紧跟此信号之后再发送一个 SIGCONT 信号,以确保干净的杀死已挂起(suspended)的进程。

SendSIGHUP=

是否在第一步发送 KillSignal= 信号后,立即紧跟着向该单元的所有进程再发送一个 SIGHUP 信号。这主要用于通知 shell 之类的进程,它们的连接已中断。默认为"no"

SendSIGKILL=

是否在超过 TimeoutStopSec= 时间后,使用 SIGKILLFinalKillSignal= 信号杀死依然残存的进程。默认值为"yes"

FinalKillSignal=

当发生了超时并且已开启 SendSIGKILL= 时,发送哪个信号给剩余的进程。应当设置为不能被服务捕获和处理的信号(SIGTERM 就不合适)。对于开发人员来说,可以使用它来生成 coredump 以了解 为什么服务在接收到最初的 SIGTERM 信号时没有正确终止。具体做法是 设置 LimitCORE= 并且将 FinalKillSignal= 设为 SIGQUITSIGABRT 之一。此选项的默认值为 SIGKILL

WatchdogSignal=

在看门狗(WatchdogSec=)发生超时的情况下,使用哪个信号终止服务。此选项的默认值为 SIGABRT

参见

systemd(1), systemctl(1), journalctl(1), systemd.unit(5), systemd.service(5), systemd.socket(5), systemd.swap(5), systemd.mount(5), systemd.exec(5), systemd.directives(7), kill(2), signal(7)