Answers:
您需要一个target-type单元,并将所有服务单元列为Wants=
依赖项。然后,您可以使用启动它systemctl start unitname.target
。(确保不要在systemctl isolate
这里使用;这将关闭所有服务的依赖关系树中的内容,而这可能是您不希望的。)
Wants=
列出所有服务的目标类型似乎足以启动,但是我似乎找不到任何使用目标类型进行停止和重新启动工作的方法。有没有允许的类型?
.target
可以通过StopWhenUnneeded=yes
在每个.service
文件中使用来停止所需的服务。superuser.com/questions/470153/…–
.target
,我使用a进行启动,对于in,我使用停止systemctl stop foo.\*
(因为所有涉及的服务的服务文件都以wit开头foo.
)。
PartOf
除了目标中,您是否尝试过使用目标组的子单元Wants
?例如:PartOf=foo.target
在foo-sub1.service
和Wants=foo-sub1.service foo-sub2.service
中foo.target
。我只是尝试了一下,仅通过启动和停止目标就可以启动和停止所有子单元。
PartOf =
配置与Requires =类似的依赖关系,但仅限于停止和重新启动单元。当systemd停止或重新启动此处列出的单元时,操作将传播到该单元。请注意,这是单向依赖性,对此单位的更改不会影响列出的单位。
当在a.service上使用PartOf = b.service时,此依存关系将在b.service的属性列表中显示为ConsistsOf = a.service。ConsistsOf =依赖关系不能直接指定。
WantedBy
密钥[Install]
并记下一个已经存在的目标。例如,如果您希望您的服务始终在其他用户登录之前启动,请使用multi-user.target
。