如何创建复合系统单元

Mar*_*cha 6 systemd

在那里,我通常会一起开始某些服务:比如 zookeeper+kafka+elassandra。有没有办法写复合单元:一起开始,一起死?意思是如果我开始这个,它会委托开始所有的,反之亦然。这样做的正确方法是什么?

use*_*686 10

一种方法是让所有三个服务都依赖于使用Requires=.

  • 一、服务: Requires=two.service three.service
  • 二.服务: Requires=one.service three.service
  • 三、服务:等

这不会创建循环——依赖项与启动顺序无关。

(也就是说,您应该声明一些 Before= 或 After=,例如,如果 kafka 需要在 zookeeper 之后运行。)


另一种方法是创建一个 .target 单元,让它依赖于你的三个服务,并且服务是PartOf=单元。(不幸的是,还不可能在 .target 本身中包含 ConsistsOf=。)

  • all.target: Requires=one.service two.service three.service
  • 一、服务: PartOf=all.target
  • 等等。

(同样,您应该另外声明服务之间的依赖关系和顺序;不要只依赖 .target 开始一切。)