系统服务依赖
Systemd services dependency
我正在尝试使用 systemd 管理三个服务。服务结构如下:
当 A 目标为 started/stopped/enabled 时,这应该传播到其他服务(A0、A1、A2)。
不过,应该还是可以start/stop/enableA0-A2相互独立,A.
到目前为止 A.target 看起来类似于:
[Unit]
DefaultDependencies=no
Wants=A0.service
Wants=A1.service
Wants=A2.service
[Install]
WantedBy=multi-user.target
Also=A0.service
Also=A1.service
Also=A2.service
A0.service:
[Unit]
Requires=some-other.service
After=some-other.service
BindsTo=A.target
DefaultDependencies=no
[Install]
WantedBy=multi-user.target
Starting/stopping 工作正常,但是当我启动单个服务(例如 A0)时,所有其他服务也会启动。为什么会这样,解决这个问题的正确方法是什么?
似乎 A.target 中的 "Wants" 和 A0.service 中的 "BindsTo" 之间的组合导致了问题。将 "BindsTo" 更改为 "PartOf" 解决了问题。
我正在尝试使用 systemd 管理三个服务。服务结构如下:
当 A 目标为 started/stopped/enabled 时,这应该传播到其他服务(A0、A1、A2)。
不过,应该还是可以start/stop/enableA0-A2相互独立,A.
到目前为止 A.target 看起来类似于:
[Unit]
DefaultDependencies=no
Wants=A0.service
Wants=A1.service
Wants=A2.service
[Install]
WantedBy=multi-user.target
Also=A0.service
Also=A1.service
Also=A2.service
A0.service:
[Unit]
Requires=some-other.service
After=some-other.service
BindsTo=A.target
DefaultDependencies=no
[Install]
WantedBy=multi-user.target
Starting/stopping 工作正常,但是当我启动单个服务(例如 A0)时,所有其他服务也会启动。为什么会这样,解决这个问题的正确方法是什么?
似乎 A.target 中的 "Wants" 和 A0.service 中的 "BindsTo" 之间的组合导致了问题。将 "BindsTo" 更改为 "PartOf" 解决了问题。