如何预测 systemd 的关闭顺序?

Ada*_*ers 11 dependencies systemd shutdown systemctl

有没有办法systemd告诉我当我干净地关闭整个系统时它将关闭服务粗略顺序?由于systemd将并行关闭,我很欣赏没有办法知道确切的顺序,但了解systemd关闭顺序会施加哪些约束仍然会非常有帮助,最好是在某种易于理解的可视化中。

动机是为了服务文件的开发和调试,拿到这个会方便很多 提前预测列表,而不是每次我想确定的时候都要真正关机再开机再检查日志对服务单元文件或 systemd 配置的其他方面的更改将对关闭顺序产生什么影响。

我希望像

systemctl list-dependencies --before shutdown.service
Run Code Online (Sandbox Code Playgroud)

会做这项工作,但它只发出:

shutdown.service
Run Code Online (Sandbox Code Playgroud)

ilp*_*p68 5

也许陈述明显的内容会降低学习效果,但我所做的就是按照原始帖子中的要求获取关闭目标的反向依赖关系的完整列表:

systemctl list-dependencies --after shutdown.target
Run Code Online (Sandbox Code Playgroud)

OT:我遇到了一个问题,kubernetes 系统的关闭挂起(机器变得无响应并且不会关闭),因为 nfs 挂载在实际服务完成关闭之前被终止。这个问题帮助我进步。


Jon*_*ica 1

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

也就是说,守护进程都会收到关闭信号,并且需要不同的时间才能真正关闭和退出。

抛开简单的 systemd 不谈,我认为有效地预测哪些服务将以什么顺序退出是不可行的。此外,依赖性将控制某些序列。

  • 是的 - 由于并行化,我意识到了这一点。但是,我不需要确切的顺序 - 只需要强制执行哪些顺序以及哪些事情可以并行运行。我将更新我的问题以澄清这一点。另外,你能符合“通常”的条件吗?什么时候不是相反呢? (2认同)