systemd:当主服务崩溃时停止依赖服务

Unc*_*ook 5 linux service systemd systemctl

(系统版本 229)

我有一个主服务A和一个辅助服务B。主服务A可以自行运行。但是服务 B 本身无法正确运行:它需要 A 运行(技术上 B可以运行,但这是我想要systemd阻止的)。我的目标:如果A不运行,B就不应该运行。假设 A 和 B 正在运行,当 A 停止或死机/崩溃时,B 应该停止。

我该如何实现这一目标?

我通过将 [Unit] 项目添加到 b.service 来接近,使用

Requisite=A.service
After=A.service
Run Code Online (Sandbox Code Playgroud)

上面的结果就是

  • 除非 A 正在运行(良好),否则 B 不会启动。
  • 当 A 停止时 B 也停止(好)。
  • 但是,如果我杀死 A,服务 B 会继续运行(不好)。

我该如何解决最后这个行为?似乎PartOfBindsTo不起作用,但也许我没有正确的选项组合咒语?从手册页中我不清楚可以组合哪些选项。

systemd.unit 手册页:https://www.freedesktop.org/software/systemd/man/systemd.unit.html 相关:Systemctl 依赖失败,停止依赖服务

Dar*_*ght 1

为了实现您的第三个目标,请使用PartOf关键字。

[Unit]在 B.service 中,您需要在下面的部分下添加对 A 的依赖项

[Unit]
..
..
PartOf=A.service
Run Code Online (Sandbox Code Playgroud)

这样,每当 A 被杀死时,B 也将停止。