仅当服务A存在时,系统服务B才能在另一个服务A之后启动

时间:2018-04-04 05:38:40

标签: linux service systemd

我有两个系统服务A和B.我希望B在A之后执行,但只有当A存在时才执行B。

2 个答案:

答案 0 :(得分:1)

您需要添加B.service文件:

After=A.service

或者您可以添加到A.service:

Before=B.service

来自SystemD文档:

  

之前=,之后=

     

这两个设置期望单元名称以空格分隔。他们配置单元之间的排序依赖性。如果单元foo.service包含设置Before = bar.service并且两个单元都在启动,则bar.service的启动将延迟到foo.service完成启动为止。请注意,此设置独立于并与由Requires =,Wants =或BindsTo =配置的需求依赖项正交。

文档来源:https://www.freedesktop.org/software/systemd/man/systemd.unit.html

答案 1 :(得分:1)

SerivceB必须包含Wants=的{​​{1}}指令。 ServiceA文件的Unit部分如下所示:

ServiceB.service

来自https://www.freedesktop.org/software/systemd/man/systemd.unit.html

  

Wants =较弱的Requires =版本。此选项中列出的单位将   如果配置单元启动,则启动。但是,如果列出的单位   无法启动或无法添加到事务中,这没有   影响整个交易的有效性。这是   推荐的将一个装置的启动挂接到装置启动的方法   另一个单位。

     

请注意,这种类型的依赖关系也可以在外部配置   通过将符号链接添加到.wants /目录来配置单元配置文件   随附单位文件。有关详细信息,请参见上文。