您如何告诉 systemd 目标满足任何要求之一?

您如何告诉 systemd 目标满足任何要求之一?

如何判断systemd实例列表中的任意实例之一满足某个要求?

假设我有一个名为 的目标main_target.target和一个名为 的服务模板[email protected]。在正常操作期间,唯一[email protected]存在的实例是:

  • serv@ex1
  • serv@ex2
  • serv@ex3

仅有的这些实例在任何给定时间都存在,我想说的是,main_target.target只要任何存在这三个实例。

直觉上,我想要类似于 SMFrequire_any标签的东西,但我在任何文档中都找不到类似的东西systemd

注1:我知道我可以使serv@ex1serv@ex2serv@ex3和 与指令互斥Conflicts=

注 2:我还知道我可以使用Before=After=指令对三个实例进行分层,以按特定顺序启动。

答案1

正如您所提到的,您可以使服务与Conflicts=指令相互排斥。目标systemd只是将单元分组在一起的一种方法,它们没有复杂的依赖选项。

systemd.目标

名称以“.target”结尾的单元配置文件编码有关 systemd 目标单元的信息,用于对单元进行分组以及启动期间众所周知的同步点。

此单位类型没有特定选项。所有单元配置文件的通用选项请参见systemd.unit(5)。通用配置项在通用的[Unit]和[Install]部分中配置。不存在单独的 [Target] 部分,因为无法配置特定于目标的选项。

系统单元以供参考。

您只能使用 中包含的指令systemd.unit,并且它不包含仅启动多个服务之一的方法。

相关内容