我最近遇到了一個問題,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