假设我有一个 systemd 服务类型的单元,其中包含以下内容Wants=
和After=
语句:
Wants=foo.service
After=foo.service
如果 on 已经打开,我真的需要指定它foo.service
吗?或者也许需要 ,因为如果没有单位指定as或,那么根本就不会启动?Wants=
After=
Wants=foo.service
foo.service
Wants=
Requires=
foo.service
答案1
Wants=
这取决于,两者都是可能的,它们都做了一些事情,但它们有不同的效果,所以如果您想确保foo.service
在另一个单元启动时该单元也启动,则您需要保留。
如果您只有顺序依赖性,例如After=foo.service
,那么这仅意味着如果两个单元都正在启动(在同一事务中),则 systemd 将foo.service
首先启动(并等到它完全启动),然后再启动当前单元。
当您不一定知道是否foo.service
启用时,这很有用,您的服务可以以任何方式工作,但是如果 foo.service
已启用,您希望在服务之前启动它。
或者也许
Wants=foo.service
需要 ,因为如果没有单位指定foo.service
asWants=
或Requires=
,那么根本foo.service
就不会启动?
对,那是正确的。和指令是仅排序指令,因此它们不会拉动其他单元,仅在该单元已经通过其他方式启动时影响排序(通常它是直接启用本身,或者可能通过或依赖于第三个单元After=
)单元。)Before=
Wants=
Requires=