首页 > linux > systemd 无 ExecStop 停止服务原理

systemd 无 ExecStop 停止服务原理

2020年10月22日 发表评论 阅读评论

systemd 代替 init,可以帮助我们不用写复杂的脚本来启停服务,大多数情况下配置 ExecStart 就能完成基本任务。很多人会对关闭表示疑问:很多 unit 文件中只有 ExecStart 命令,没有ExecStop、ExecReload命令也能实现关闭和重启,这是为什么?

例如,关闭防火墙服务执行systemctl stop firewalld

执行后,如果没有配置ExecStop,Systemd 默认将发送SIGTERM信号到主进程,并等待TimeoutStopSec配置的时间后查看进程是否已终止,如果没配置这个时间默认是90s。

90s以后,systemd 会检查进程有没有停止成功,如果还没停止,则 systemd 会发送SIGKILL信号来强杀进程完成该任务。如果主进程 fork 了其他子进程,则 systemd 也会一并停止它们,因为它们都位于同一个 cgroup 中。

ExecStop=除非您有其他关闭服务的方法,否则您无需指示。

分类: linux 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.