Systemd

如何直接檢查 systemd 日誌文件?

  • April 8, 2022

我的設備上的 arch linux 失敗了。該設備沒有任何螢幕,它不響應網路。所以我拿了它的 SD 卡,將它插入 ubuntu 桌面,在那裡看到一個新的 system.journal 並且……如何查看裡面的內容?

從 Arch Linux 文件中我知道我可以做到:

strings /mnt/arch/var/log/journal/.../system.journal | grep -i message

但這真的很基礎。問題是:

有沒有比使用字元串更方便的方法從另一個系統檢查 system.journal ?例如,我可以指定要為journalctl讀取的文件嗎?

首先,使用的能力strings源於一個巧合,因為 journald 不會壓縮小的(在目前實現中低於 64KiB)欄位。這不是閱讀期刊的受支持方式,在 archwiki 中確實應該這樣標記。它更像是一種最後的恢復方法。

現在談談這個問題。從journalctl(1)

-D 目錄,–目錄 = 目錄

將目錄路徑作為參數。如果指定,journalctl 將在指定的日誌目錄 DIR 上操作,而不是預設的執行時和系統日誌路徑。

因此,假設損壞系統的 rootfs 掛載在 下$DEST,請使用journalctl -D $DEST/var/log/journal查看其係統日誌。

為了完整起見:要查看特定文件,請使用journalctl --file,例如journalctl --file /var/log/journal/$(cat /etc/machine-id)/system.journal. 但是,請注意日誌文件會定期輪換,因此根據您的案例,此表單可能無法用於查看完整的日誌。

引用自:https://unix.stackexchange.com/questions/199988