假设一个单元 (Unit1) 具有以下单元文件配置:
[Unit]
Wants=Unit2
Before=Unit2
我读想要如“Unit1 在启动时将尝试运行 Unit2(但如果失败也没关系)”。
我读前因为“Unit1 应在Unit2 之前启动”。
如果想要使 Unit2(尝试)在 Unit1 之前启动,但是前让Unit1先于Unit2启动,实际情况到底是怎样的?这里会发生什么?
提前致谢!
答案1
如果一个单元
foo.service
包含设置Before=bar.service
并且两个单元都正在启动,bar.service
则启动会延迟,直到foo.service
完成启动。请注意,此设置与Requires=
、Wants=
或所配置的需求依赖关系无关且正交BindsTo=
。
注:独立且正交。
和:
Wants=
的较弱版本Requires=
。如果配置单元已启动,则将启动此选项中列出的单元。
这没有说明导致 Unit2 启动前单元1。它的意思是,当启动Unit1被设置为启动时,Unit2也会被设置为启动,但这并不意味着启动Unit2会在Unit1启动之前、之后或同时完成。该顺序由 设定Before
,这将导致 Unit2 的启动延迟,直到 Unit1 完成启动。