“Before=”指令的目的是什么

“Before=”指令的目的是什么

Requires=对我来说,对于在某种程度上依赖于其他服务的服务来说,在其脚本(使用和After=指令)中指定这一点听起来更自然。毕竟,在编写服务时,您实际上无法了解可能依赖于它的所有服务,但您可以知道您的服务依赖于什么。

那么问题是:该Before=指令的实际目的是什么?什么时候应该使用它?

答案1

BeforeAfter指定服务之间的排序约束,但不指定服务之间的依赖关系约束。因此,无需详尽记录依赖于该服务Before声明中任何给定服务的服务;正如您正确指出的那样,这是不可能的。

Before当使用你知道您的服务必须在另一个已知的单元之前启动,即使其他单元不一定依赖于指定的服务。重要的方面是捕获知识的意义所在。特别是,它经常用在服务描述中来声明服务必须在给定的时间之前启动。目标,这几乎是描述服务和目标之间的排序约束的唯一明智的方式;例如,wpa_supplicant@必须在目标之前启动network。其他合适的情况包括以某种方式“增强”其他服务的服务,其中不能期望增强的服务了解增强的服务;例如,fwupd说它必须在服务之前启动gdm,这是可以的,但您不会期望gdm知道它应该在服务之后启动fwupd(或更糟糕的是,取决于它)。

相关内容