systemd:需要还是绑定?

systemd:需要还是绑定?

我在同一台机器上运行两个服务,A 和 B。A 是服务器,B 是客户端

  • A 可以单独运行,但 B 必须先运行 A 才能启动
  • 如果 A 崩溃、停止或重新启动,B 必须停止或重新启动
  • 如果 B 崩溃、停止或重启,A 不会受到影响并可以继续运行

在 B.service 中我应该使用Requires还是BindsTo

[Unit]
Description=service B
After=A.service
Requires=A.service

或者

[Unit]
Description=service B
After=A.service
BindsTo=A.service

我是否需要添加计数器部分,例如RequiredByConsistsOf在 A.service 中?

答案1

使用第二个选项 (BindsTo + After) 最适合您的用例。BindsTo 允许 B 在 A 停止时停止,在 A 启动时启动。当 A 尚未启动时,B 不会启动。

答案2

BindsTo与 不同Requiresa.service意外/异常停止时,b.service仅在使用 时停止BindsTo

手册页确实说,使用Requires,“明确”停止a.service也会停止b.service。但手册页上没有明确说明使用 时同样的情况会怎样。手册页还在部分中BindsTo说意外停止a.service也会停止。但同样,对于使用 时意外停止会产生什么影响,手册页也不够清楚。b.serviceBindsToRequires

请查看这篇详细的文章,它解释得很清楚。

https://pychao.com/2021/02/24/difference-between-partof-and-bindsto-in-a-systemd-unit/

披露:我不是作者。

相关内容