当“想要”和“之前”中指定相同的单位时,这实际上意味着什么?

当“想要”和“之前”中指定相同的单位时,这实际上意味着什么?

假设一个单元 (Unit1) 具有以下单元文件配置:

[Unit]
Wants=Unit2
Before=Unit2

我读想要如“Unit1 在启动时将尝试运行 Unit2(但如果失败也没关系)”。

我读因为“Unit1 应在Unit2 之前启动”。

如果想要使 Unit2(尝试)在 Unit1 之前启动,但是让Unit1先于Unit2启动,实际情况到底是怎样的?这里会发生什么?

提前致谢!

答案1

man systemd.unit:

如果一个单元foo.service包含设置Before=bar.service并且两个单元都正在启动,bar.service则启动会延迟,直到foo.service完成启动。请注意,此设置与Requires=Wants=或所配置的需求依赖关系无关且正交BindsTo=

注:独立且正交。

:

Wants= 的较弱版本Requires=。如果配置单元已启动,则将启动此选项中列出的单元。

这没有说明导致 Unit2 启动单元1。它的意思是,当启动Unit1被设置为启动时,Unit2也会被设置为启动,但这并不意味着启动Unit2会在Unit1启动之前、之后或同时完成。该顺序由 设定Before,这将导致 Unit2 的启动延迟,直到 Unit1 完成启动。

相关内容