systemd.kill 中文手册
名称
systemd.kill — 配置如何杀死进程
大纲
,service
.service
,socket
.socket
,mount
.mount
,swap
.swapscope
.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=
时间后,进程仍然未被杀死,则继续第二步使用SIGKILL
或FinalKillSignal=
信号(除非SendSIGKILL=no
)强制杀死。详见 kill(2) 手册。默认值是
control-group
KillSignal=
设置 杀死进程的第一步 使用什么信号(见上文)。所有可用的信号详见 signal(7) 手册。默认值为
SIGTERM
信号。注意,systemd 会无条件的紧跟此信号之后再发送一个
SIGCONT
信号,以确保干净的杀死已挂起(suspended)的进程。SendSIGHUP=
是否在第一步发送
KillSignal=
信号后,立即紧跟着向该单元的所有进程再发送一个SIGHUP
信号。这主要用于通知 shell 之类的进程,它们的连接已中断。默认为"no"SendSIGKILL=
是否在超过
TimeoutStopSec=
时间后,使用SIGKILL
或FinalKillSignal=
信号杀死依然残存的进程。默认值为"yes"FinalKillSignal=
当发生了超时并且已开启
SendSIGKILL=
时,发送哪个信号给剩余的进程。应当设置为不能被服务捕获和处理的信号(SIGTERM
就不合适)。对于开发人员来说,可以使用它来生成 coredump 以了解 为什么服务在接收到最初的SIGTERM
信号时没有正确终止。具体做法是 设置LimitCORE=
并且将FinalKillSignal=
设为SIGQUIT
或SIGABRT
之一。此选项的默认值为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)