系统服务依赖

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" 解决了问题。