如何预测systemd的关机顺序?


9

当我彻底关闭整个系统时,是否有办法systemd告诉我关闭服务的大致顺序?由于systemd将并行关闭设备,因此,我很高兴无法知道确切的顺序,但是了解systemd关闭顺序上将施加哪些约束仍然很有帮助,最好是采用某种易于理解的可视化方法。

这样做的动机是,对于服务文件的开发和调试,提前获得此预测列表要方便得多,而不是必须进行真正的关机然后重新启动并在每次我想确定的时候检查日志对服务单元文件的更改或systemd配置的其他方面的影响将对关机顺序产生什么影响。

我希望有类似的东西

systemctl list-dependencies --before shutdown.service

会完成这项工作,但只会发出:

shutdown.service

Answers:


2

以下内容可能对您有帮助:

systemctl list-dependencies --before shutdown.target

问候,


3
好吧,感谢您指出我的愚蠢错误,它shutdown.target不是shutdown.service。但是,这仍然没有给我我请求的排序列表,而是给了我一个很短的列表,在某些系统上甚至是一个空列表。
亚当·斯皮尔斯

不幸的是,Systemd是不透明的。对于老式的sysvinit风格,可以将日志添加到启动文件中,并在带有时间戳的文件中注册已启动的进程-至少这是我首先想到的。
shevy

1
@AdamSpiers @Mohamed Salhi基本上,“之前”是指“之前开始”。这意味着您想要的命令是systemctl list-dependencies --after shutdown.target...至少可以找到第一个命令无法找到的所有内容。这也很混乱,因为shutdown.target正在启动,但是所有其他单元都在停止,在这种情况下,您是否具有“之前”或“之后”的顺序都无关紧要;在这两种情况下,停止都是在开始之前完成的。
sourcejedi

1

关机顺序通常与启动顺序相反。

就是说,所有守护程序都发送了关闭信号,并且将花费不同的时间才能真正关闭并退出。

离开普通的systemd,我认为有用地预测哪些服务将以什么顺序退出是不可行的。此外,依赖关系将控制某些序列。


1
对-由于并行化,我意识到了这一点。但是,我不需要确切的顺序-只是强制执行哪些顺序以及哪些事情可以并行运行。我将更新我的问题以澄清这一点。另外,您可以“通常”获得资格吗?什么时候不会相反?
亚当·斯皮尔斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.