systemd 服务 A 有“冲突=B”。 A 和 B 均已启用。您能否判断哪些服务将被允许在启动时启动(如果有的话),还是随机的?

systemd 服务 A 有“冲突=B”。 A 和 B 均已启用。您能否判断哪些服务将被允许在启动时启动(如果有的话),还是随机的?

在 Debian 9 上安装该firewalld软件包也会拉入该ebtables软件包。这会向系统添加两项服务,firewalld并且ebtables.与往常一样,Debian 启用这两项服务。

firewalld.service被标记为Conflicts=ebtables.service.

当系统启动时这两个服务会发生什么?我能知道两者中的哪一个可以运行吗?或者两者都不被允许运行?

答案1

如果与单元 B 冲突的单元 A 计划与 B 同时启动,则事务将失败(如果两者都是事务的一部分)或修改为固定(如果其中一个或两个都需要)工作不是交易的必需部分)。在后一种情况下,不需要的作业将被删除,或者如果两者都不需要,则将启动冲突的单元并停止冲突的单元。

--man 系统单元

在这种情况下, 和 都firewalld.service只是ebtables.serviceWantedBy=multi-user.target而不是RequiredBy=

结论: firewalld.service会启动,也ebtables.service不会启动。


这不会告诉您安装后立即发生的情况firewalld。幸运的是,结果是相同的,因为ebtables先安装了。这个顺序的意思是暂时启动,但启动ebtables.service后又停止:firewalld.service

如果一个单元在另一个单元上有 Conflicts= 设置,则启动前者将停止后者,反之亦然。

相关内容