.service
我已经为构成我正在开发的系统的不同部分编写了大约六个文件。能够逐步启动整个系统很有用,但我也希望有一个单元可以通过一次调用来启动整个系统systemctl
。
最好的方法是什么?
答案1
你想要一个目标型单位,所有服务单元都列为Wants=
依赖项。然后你使用 启动它systemctl start unitname.target
。 (请确保不要在此处使用systemctl isolate
;这将关闭除服务依赖关系树中的内容之外的所有内容,而您可能不想要这些内容。)
答案2
你有没有尝试过使用PartOf
Wants
除了目标之外,还针对目标群体的子单位?例如:PartOf=foo.target
在foo-sub1.service
和Wants=foo-sub1.service foo-sub2.service
在 中foo.target
。我刚刚尝试过这个,并且只需启动和停止目标就能够启动和停止我的所有子单元。
部分=
配置类似于 Requires= 的依赖关系,但仅限于停止和重新启动单元。当 systemd 停止或重新启动此处列出的单元时,操作将传播到该单元。请注意,这是一种单向依赖关系 - 对此单位的更改不会影响列出的单位。
当在 a.service 上使用 PartOf=b.service 时,此依赖关系将在 b.service 的属性列表中显示为 ConsistsOf=a.service。 ConsistsOf= 不能直接指定依赖关系。