我有 2 个 systemd 单元需要配置。它们都需要在特定位置设置配置文件(每个都有自己的配置位置),因此它们都配置了ConditionPathExists
各自的配置文件。
它们由于监听同一端口而相互冲突。所以他们也配置了Conflicts=
但是,在两个配置文件都存在的情况下(在正常情况下不应发生,但可能会发生),我希望启动服务 A 而不是服务 B。为此我应该配置什么?
答案1
如果两个单元都已排队并且其他一切都相同(即两个单元都通过相等的 Wants= 依赖项被拉入),则单位有Conflicts=
将是开始的单元,而“与其他内容冲突”单元将被跳过。
答案2
我不知道 Systemd 中有任何优先级配置,但您可以使用 Systemd 功能来实现目标。
# a.service
ConditionPathExists=/path/to/configfile.a
# b.service
ConditionPathExists=!/path/to/configfile.a
ConditionPathExists=/path/to/configfile.b