Nay*_*dhu 5 linux service systemd
我有两个 systemd 服务 A 和 B 。我希望 B 在 A 之后执行,但仅当 A 存在时才执行 B 。
小智 5
您需要在 B.service 文件中添加:
After=A.service
Run Code Online (Sandbox Code Playgroud)
或者你可以添加到A.service:
Before=B.service
Run Code Online (Sandbox Code Playgroud)
来自 SystemD 文档:
之前=,之后=
这两个设置需要一个以空格分隔的单位名称列表。它们配置单元之间的排序依赖性。如果单元 foo.service 包含设置 Before=bar.service 并且两个单元都正在启动,则 bar.service 的启动将延迟,直到 foo.service 完成启动。请注意,此设置独立于并正交于 Requires=、Wants= 或 BindsTo= 配置的需求依赖项。
文档来源:https://www.freedesktop.org/software/systemd/man/systemd.unit.html
SerivceB需要包含Wants=的指令ServiceA。Unit文件的部分ServiceB.service看起来像这样:
[Unit]
Description=ServiceB description
Wants=ServiceA.service
Run Code Online (Sandbox Code Playgroud)
来自https://www.freedesktop.org/software/systemd/man/systemd.unit.html
Wants= Requires= 的较弱版本。如果配置单元已启动,则将启动此选项中列出的单元。但是,如果列出的单位未能启动或无法添加到交易中,这不会影响整个交易的有效性。这是将一个单元的启动与另一个单元的启动挂钩的推荐方法。
请注意,这种类型的依赖项也可以通过将符号链接添加到单元文件附带的 .wants/ 目录来在单元配置文件之外进行配置。详细信息请参见上文。