如何使systemd不挂起(系统无响应),但提供紧急shell?

如何使systemd不挂起(系统无响应),但提供紧急shell?

我对systemd不是很熟悉。我对这个问题寻求的答案是:

怎么可能使系统通过“将用户放入某种紧急 shell”来应对问题,而不是简单地让系统无响应?

明确的示例:在 thinkpad 上安装 arch linux 的情况下,似乎 x-org-server、wayland、systemd 或 lightdm 存在一些配置错误,这不会产生错误消息,而是留下用户挂断电话。这意味着用户看到输出到 tty1 的服务/启动消息停止,而没有产生任何错误消息(如果有一个光荣的消息)系统日志吃了它?)并且没有任何组合键甚至可以生成 root shell 来使用户能够检查错误并纠正它。

因此,答案是如何将 systemd 配置为进入紧急 shell,以避免系统因任何错误而挂起。图形目标

例如,在这个 U&L 问题中,这种挂起的情况可能是如何发生的“arch-linux-hang-on-reached-target-graphic-interface

答案1

systemd 配置中没有任何部分包含将无响应的系统作为有意路径。

系统有很多专门用于流程管理的配置。参见示例Restart=OnFailure=

为了解决您的问题并避免系统无响应,您需要更好地了解原因是什么。检查journalctl -xe是一个很好的起点(可能在重新启动后)。尝试在输出中搜索“致命”或“错误”。

如果您遇到内核恐慌或内存损坏,systemd在任何情况下都无法为您提供帮助。

答案2

当单元进入故障状态时,可以通过OnFailure=emergency.target在该[Unit]部分中使用来触发emergency.target。也就是说,服务“挂起”(永远忙循环)不会触发故障条件,它将继续运行,直到被杀死或达到超时。

Systemd 无法知道“挂起”的程序是否正在执行设计目的或正在失败,这由系统管理员决定。

相关内容