systemd 单元中的“After”是否会影响关机或重新启动的顺序

systemd 单元中的“After”是否会影响关机或重新启动的顺序

我有一项服务设置为在网络后启动,如下所示:

[Unit]
Description=Some service
After=network.target

该服务本身运行 find 并执行其应该执行的操作。但是当我发出重新启动命令时,systemd 会显示如下内容:

A stopjob is running for "SERVICE"...

并且在服务真正终止之前会经过一个默认的超时时间。

如果我删除“After”子句,服务将再次正常运行,并且在尝试重新启动时不再出现超时。

我想知道可能是什么原因? “之后”是否还意味着应该在给定目标之前或之后终止或停止服务?我的意思是它也会以任何方式影响停止的顺序吗?

答案1

我的问题问得太快了。 systemd 手册页明确指出:

请注意,当两个具有顺序依赖性的单元被关闭时,将应用启动顺序的相反顺序。即,如果一个单元在另一个单元上配置了 After=,则如果两个单元都关闭,则前者会先于后者停止。假设两台设备之间存在任何顺序依赖性,如果一台设备关闭而另一台设备启动,则关闭顺序将先于启动顺序。排序依赖项是 After= 还是 Before= 并不重要。

相关内容