如何确定 Systemd 进入紧急模式的确切原因

jor*_*anm 12 debian systemd systemd-journald

我的运行 Debian Jessie 的台式计算机在每次启动时都开始进入紧急模式 shell。屏幕说使用journalctl -xb查找原因,使用systemctl default继续引导。当我执行时systemctl default,系统继续启动,在使用系统几周后,没有任何明显的错误。

仔细看journalctl -xb,没有什么是掉到紧急情况下的原因。是否有一种简单的方法可以确定它决定进入紧急模式的确切原因?是否有其他标志或启动选项可以明确问题所在?

sou*_*edi 7

故障应该[ FAIL ]在控制台上显示为红色(而不是[ OK ]),并在其旁边显示单元的描述。通常,第一次失败是最重要的。在控制台上使用 shift+pageup 向上滚动并查看过去几屏的输出。如果输出过多,这可能不起作用。

即使您通常看不到[ OK ]消息,这也有效,例如由于quietDebian 使用的内核命令行。第一次失败时,systemd 切换到详细模式。

否则,您可以使用systemctl. 如果没有任何选项,它会显示大量已知单元的列表,其中以红色突出显示故障。要仅显示失败的,请使用systemctl --state=failedsystemctl --failed


如果您搜索单元文件,则引导回退到emergency.target. 通常是当.mount本地文件系统的一个单元出现故障时,导致local-fs.target失败。或者当您的 initramfs 无法挂载根文件系统时,如果您的 initramfs 使用 systemd。

local-fs.targetOnFailure=emergency.target. 它会失败,因为本地文件系统的单元会自动添加到 local-fs.target 的 Requires 列表中(除非它们有DefaultDependencies=no)。

$ systemctl show --property Requires local-fs.target
Requires=-.mount home.mount boot.mount boot-efi.mount
Run Code Online (Sandbox Code Playgroud)


mad*_*lao 2

每隔一段时间,我就会遇到“维护模式”提示,并且我还必须滚动日志以查找错误。由于 Journalctl 使用 less 作为分页器,因此您应该能够在搜索中应用任何 less 快捷方式。

通常,我会依靠搜索功能 (/) 并搜索与“错误”、“警告”或“失败”等效的任何内容。并确保 -i 强制不区分大小写的搜索。

所以我的击键往往是这样的:

-i (case insensitive)
g (move to start)
/error
nnnn (skip through results)
g (move to start)
/fail
nnnn (skip through results)
g (move to start)
/warn
nnnn (skip through results)
Run Code Online (Sandbox Code Playgroud)

从技术上讲,这并不是对精确问题的详尽或精确搜索,但我从未以这种方式错过启动问题。

下面是一些相关的较少键盘快捷键:

http://www.thegeekstuff.com/2010/02/unix-less-command-10-tips-for- effective-navigation/