如何判断systemd
实例列表中的任意实例之一满足某个要求?
假设我有一个名为 的目标main_target.target
和一个名为 的服务模板[email protected]
。在正常操作期间,唯一[email protected]
存在的实例是:
serv@ex1
serv@ex2
serv@ex3
仅有的一这些实例在任何给定时间都存在,我想说的是,main_target.target
只要任何存在这三个实例。
直觉上,我想要类似于 SMFrequire_any
标签的东西,但我在任何文档中都找不到类似的东西systemd
。
注1:我知道我可以使serv@ex1
、serv@ex2
、serv@ex3
和 与指令互斥Conflicts=
。
注 2:我还知道我可以使用Before=
和After=
指令对三个实例进行分层,以按特定顺序启动。
答案1
正如您所提到的,您可以使服务与Conflicts=
指令相互排斥。目标systemd
只是将单元分组在一起的一种方法,它们没有复杂的依赖选项。
名称以“.target”结尾的单元配置文件编码有关 systemd 目标单元的信息,用于对单元进行分组以及启动期间众所周知的同步点。
此单位类型没有特定选项。所有单元配置文件的通用选项请参见systemd.unit(5)。通用配置项在通用的[Unit]和[Install]部分中配置。不存在单独的 [Target] 部分,因为无法配置特定于目标的选项。
系统单元以供参考。
您只能使用 中包含的指令systemd.unit
,并且它不包含仅启动多个服务之一的方法。