systemd stop命令如何实际工作

use*_*417 43 systemd

我正在使用一个systemd服务,当它被"启动"时调用一个进程(例如$ systemctl start test.service).根据设计,该过程永远保持循环,我们可以使用'ps'命令查看进程是否存在.我们还看到该进程被系统停止命令杀死(按预期).但是我们的要求是,我们希望在进程被杀之前从进程内做一些安全的关闭操作.但我不确定如何从进程中检测系统停止操作.

systemctl是否停止test.service命令发送SIGKILL或SIGTERM信号以终止该进程?如何从进程中检测到systemctl停止操作?

Mar*_*erg 62

默认情况下,发送SIGTERM,然后等待90秒,然后是SIGKILL.

杀戮过程systemd非常可定制且记录完备.

我建议阅读所有man systemd.kill以及在man systemd.service中阅读有关ExecStop =作为文档的所有选项.

  • 值得注意的是:如果主进程在超时之前停止,systemd 将向所有子进程(如果还有剩余子进程)发送 SIGKILL。如果超时,就会向整个控制组发送SIGKILL。 (5认同)