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