systemd.kill 中文手册

译者:金步国


版权声明

本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。

其他作品

本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:

联系方式

由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。


手册索引 . 指令索引systemd-235

名称

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= 时间后, 进程仍然未被杀死, 则继续第二步使用 SIGKILL 信号(除非 SendSIGKILL=no)强制杀死。 详见 kill(2) 手册。

默认值是 control-group

KillSignal=

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

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

SendSIGHUP=

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

SendSIGKILL=

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

参见

systemd(1), systemctl(1), journalctl(8), 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)