(systemd 版本 229,fwiw)
我有一个主要服务 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)
上面的结果是
1) B won't start unless A is running (good).
2) B is stopped when A is stopped (good).
3) However, if I kill A, service B continues to run (bad).
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个最后的行为 #3?我尝试使用 BindsTo 而不是 Requisite,就像在 B 的服务文件中这样:
BindsTo=A.service
After=A.service
Run Code Online (Sandbox Code Playgroud)
我得到:
1) If …
Run Code Online (Sandbox Code Playgroud)