在 Systemd 中启动服务之前,我需要检查一个文件是否存在。在 [Unit] 中有两种情况:
ConditionPathExists=!/tmp/abc
和
ConditionPathExists=|!/tmp/abc
它们是一样的吗?有人可以帮我解释一下它们是否不同吗?
有时候您会指定多个文件,例如:
ConditionPathExists=!/tmp/abc
ConditionPathExists=!/tmp/abe
如果任何一个条件不满足,服务就不会启动。这就像逻辑运算中的“与”操作。
现在如果您使用:
ConditionPathExists=|!/tmp/abc
ConditionPathExists=|!/tmp/abe
如果满足其中任何条件,它将运行服务。
条件检查可以用管道符号(|)作为前缀,这时条件就变成了触发条件。如果针对一个单元至少定义了一个触发条件,则当至少有一个触发条件适用并且所有非触发条件都适用时,该单元将被执行。
这就像OR操作一样。