Systemd BindsTo - 服务崩溃后重新启动

Systemd BindsTo - 服务崩溃后重新启动

我的系统有多个systemd服务,让我们a.service通过z.service.只要所有这些服务都在运行,我的系统就被认为是“正在运行”。

该状态应在某处指示,即在设备状态 LED 上指示。为此,我想到使用另一个 systemd 服务,我们称之为system-status.service,它执行以下操作:

  • 当所有服务都active显示正在运行时
  • 当任何服务崩溃/停止时表明未运行

使用这个不完整的代码片段system-status.service运行良好,除了一种情况:

[Unit]
BindsTo=a.service
BindsTo=b.service
...

After=a.service
After=b.service 
...

[Service]
ExecStart=/usr/bin/indicate-running.sh
ExecStop=/usr/bin/indicate-stopped.sh

但是,如果a.service包含行Restart=always,并且a.service崩溃(通过 模拟kill -9),a.service则成功重启,但system-status.service不是!

kill -9 <a.pid>

有任何想法吗?谢谢!

答案1

您需要的是和Wants=system-status.service之间的关系。假设您不想添加对这两个服务的覆盖,您应该将反向关系添加到安装部分:a.serviceb.servicesystem-status.service

...

[Install]
WantedBy=a.service
WantedBy=b.service

要使此部分生效,您必须systemctl enable system-status.service再次运行。

相关内容