如何直接检查 systemd 日志文件?

Maj*_*cRa 33 systemd systemd-journald

我的 arch linux 在设备上失败了。该设备没有任何屏幕,它不响应网络。所以我拿了它的 SD 卡,把它插入 ubuntu 桌面,在那里看到一个新的 system.journal 和......如何看到里面有什么?

从 Arch Linux 文档中我知道我可以做到:

 strings /mnt/arch/var/log/journal/.../system.journal | grep -i message
Run Code Online (Sandbox Code Playgroud)

但它真的很基础。问题是:

从另一个系统检查 system.journal 是否有比使用strings更方便的方法?例如,我可以指定要为journalctl读取的文件吗?

int*_*lfx 44

首先,使用的能力strings仅仅是巧合,因为 journald 不会压缩小(在当前实现中低于 64KiB)字段。这不是一种受支持的阅读期刊的方式,在 archwiki 中它确实应该被标记为这样。它更像是一种最后的恢复方法。

现在来回答这个问题。从journalctl(1)

-D DIR, --directory=DIR

以目录路径作为参数。如果指定,journalctl 将对指定的日志目录 DIR 而不是默认的运行时和系统日志路径进行操作。

因此,假设损坏系统的 rootfs 挂载在 下$DEST,使用journalctl -D $DEST/var/log/journal查看其系统日志。

为了完整起见:要查看特定文件,请使用journalctl --file,例如journalctl --file /var/log/journal/$(cat /etc/machine-id)/system.journal. 但是,由于期刊文件会定期轮换,因此该表格实际上无法用于查看完整的期刊。

  • @Turion使用提供journalctl二进制文件的救援系统。它不需要正在运行的 systemd。 (6认同)