我有两个系统服务A和B.我希望B在A之后执行,但只有当A存在时才执行B。
答案 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 /目录来配置单元配置文件 随附单位文件。有关详细信息,请参见上文。