儘管 Storage=persistent,systemd-journald 系統日誌在啟動時並不持久

儘管 Storage=persistent,systemd-journald 系統日誌在啟動時並不持久

我最近遇到了一個問題,systemd 不保留以前啟動的日誌。我在這裡和其他地方檢查了幾個答案,但還沒有找到解決方案。

問題是使用者日誌在啟動後會持續存在,但係統日誌不會

/etc/systemd/journald.conf

[Journal]
Storage=persistent
SystemMaxUse=500M
SystemMaxFiles=5

journalctl -b -1

[root@2ba2de9e /var/log/journal] # journalctl --system -b -1
Data from the specified boot (-1) is not available: No such boot ID in journal

我在一些樹莓派上使用 archlinux arm

版本4.14.24-1-ARCH systemd 237.64-1 systemd-sysvcompat 237.64-1

任何人都知道為什麼會發生這種情況?在我的桌上型電腦上這可以正常工作嗎?

答案1

由於磁碟空間不足,journald 可能會刪除舊日誌。 (你沒有提到啟動後多長時間-b -1不起作用,所以我不知道你當時是否有很多來自當前啟動的日誌。)

您已SystemMaxUse=500M配置,但如果您沒有太多可用磁碟空間,journald 可能會決定使用少於 500MB 的空間。還有一個SystemKeepFree=...設置,預設為檔案系統大小的 15%(或 4GB,以較小者為準),journald 會比您允許的空間更嚴格地強制執行該限制。如果您的/var/log/journal分區很緊,這可能是問題的一部分。

您可以使用一些指令來檢查journald正在使用多少空間,例如:

$ journalctl --disk-usage

您還可以看到有多少靴子(以及它們的時間和 ID):

$ journalctl --list-boots

這些也可能有助於闡明您的問題...

我希望這有幫助!

答案2

我的發行版附帶了這個文件:/etc/systemd/journald.conf.d/volatile-storage.conf 它有以下行

Storage=volatile

易失性部分需要更改為持久性,否則更改/etc/systemd/journal.conf將被忽略。

答案3

延伸至米爾答案是,要Storage=volatile工作Storage=auto,該/var/log/journal目錄必須存在,並且某些發行版預設不提供此位置。

因此,您需要建立並指示journald將記憶體中的所有內容刷新到其中。

sudo mkdir /var/log/journal     ## Enable persistent logging
sudo journalctl --flush

相關內容