ConditionPathExists =和ConditionPathExists = |之间的区别是什么 在systemd?

Tha*_*yen 10 linux redhat systemd

在Systemd中启动我的服务之前,我需要检查一个文件不存在.我在[单位]中看到两个案例:

ConditionPathExists=!/tmp/abc
Run Code Online (Sandbox Code Playgroud)

ConditionPathExists=|!/tmp/abc
Run Code Online (Sandbox Code Playgroud)

他们是一样的吗?任何人都可以帮我解释一下他们是不同的吗?

khr*_*hrm 18

有时您指定多个文件,如:

ConditionPathExists=!/tmp/abc
ConditionPathExists=!/tmp/abe
Run Code Online (Sandbox Code Playgroud)

现在,如果不满足任何条件,则不会启动服务.就像和操作一样.

现在,如果您使用:

ConditionPathExists=|!/tmp/abc
ConditionPathExists=|!/tmp/abe
Run Code Online (Sandbox Code Playgroud)

如果满足任何这些条件,它将运行该服务.

条件检查可以使用管道符号(|)作为前缀,在这种情况下,条件成为触发条件.如果为单元定义了至少一个触发条件,则如果至少有一个触发条件适用且所有非触发条件都将执行该单元

这就像OR操作

  • +1 systemd 的优点和缺点是可以隐藏在手册页中的一些非常有用的细节。感谢您强调这一点@khrm (2认同)