systemd 日誌維護指南(附實例)
systemd 內置了很多管理系統日誌的功能。在本指南中,我們將介紹如何管理系統日誌,並對其採取輪換、歸檔和清除日誌等操作。我們還解釋了手動系統日誌清理方法和使用配置文件的變化。
如果你的 Linux 發行版支持 systemd,那麼從啟動時開始,它每秒鐘都會從系統的所有進程和應用程序中收集日誌。所有這些日誌事件都由 systemd 的 journald
守護程序管理。journald 收集所有的日誌(信息、警告、錯誤等),並將其作為二進位數據存儲在磁碟文件中。
由於日誌保留在磁碟中,而且每秒鐘都在收集,所以它佔用了巨大的磁碟空間;特別是對於舊的系統、伺服器來說。例如,在我的一個運行了一年左右的測試系統中,日誌文件的大小是 GB 級的。
如果你管理多個系統、伺服器,建議一定要正確管理 journald 日誌,以便高效運行。讓我們來看看如何管理日誌文件。
systemd 日誌維護
使用 systemd 的 journalctl
工具,你可以查詢這些日誌,對其進行各種操作。例如,查看不同啟動時的日誌文件,檢查特定進程或應用程序的最後警告和錯誤。如果你對這些不了解,我建議你在學習本指南之前先快速瀏覽一下此教程:使用 journalctl 查看和分析 systemd 日誌(附實例) 》。
物理日記的日誌文件在哪裡?
systemd 的 journald 守護進程在每次啟動時都會收集日誌。這意味著,它根據啟動情況對日誌文件進行分類。
日誌以二進位形式存儲在路徑 /var/log/journal
,文件夾為機器 ID。
比如說:
另外,請記住,根據系統配置,運行時日誌文件被存儲在 /run/log/journal/
。而這些在每次啟動時都會被刪除。
我可以手動刪除日誌文件嗎?
你可以,但不要這樣做。相反,請按照下面的說明,使用 journalctl
工具清除日誌文件以釋放磁碟空間。
systemd 的日誌文件佔用了多少磁碟空間?
打開一個終端,運行以下命令。
journalctl --disk-usage
這應該為你提供系統中的日誌文件實際使用的數量。
如果你有一個圖形化的桌面環境,你可以打開文件管理器,瀏覽路徑 /var/log/journal
,並檢查屬性。
systemd 日誌清理過程
清理日誌文件的有效方法應該是通過 journald.conf
配置文件來完成。正常情況下,即使 journalctl
提供了刪除日誌文件的工具,你也不應該手動刪除這些文件。
讓我們來看看如何 手動 刪除它,然後我將解釋 journald.conf
中的配置變化,這樣你就不需要時不時地手動刪除文件;相反,systemd 會根據你的配置自動處理它。
手動刪除
首先,你必須 flush
和 rotate
日誌文件。 輪換 是將當前活動的日誌文件歸檔,並立即開始創建一個新的日誌文件繼續記錄日誌。 沖洗 開關要求日誌守護進程將存儲在 /run/log/journal/
中的所有日誌數據沖入 /var/log/journal/
,如果持久性存儲被啟用的話。
然後,在 flush
和 rotate
之後,你需要用 vacuum-size
、vacuum-time
和 vacuum-files
選項運行 journalctl
來強制 systemd 清除日誌。
例 1:
sudo journalctl --flush --rotate
sudo journalctl --vacuum-time=1s
上面這組命令會刪除所有存檔的日誌文件,直到最後一秒。這有效地清除了一切。因此,在運行該命令時要小心。
清理完畢後:
你也可以根據你的需要在 --vacuum-time
的數字後面提供以下後綴:
s
:秒m
:分鐘h
:小時days
:天months
:月weeks
:周years
:年
例 2:
sudo journalctl --flush --rotate
sudo journalctl --vacuum-size=400M
這將清除所有存檔的日誌文件,並保留最後 400MB 的文件。記住這個開關只適用於存檔的日誌文件,不適用於活動的日誌文件。你也可以使用後綴,如下所示。
K
:KBM
:MBG
:GB
例 3:
sudo journalctl --flush --rotate
sudo journalctl --vacuum-files=2
vacuum-files
選項會清除所有低於指定數量的日誌文件。因此,在上面的例子中,只有最後兩個日誌文件被保留,其他的都被刪除。同樣,這隻對存檔的文件有效。
如果你願意,你可以把兩種選項結合起來,但我建議不要這樣做。然而,如果同時使用兩個選項,請確保先用 --rotate
選項運行。
使用配置文件自動刪除
雖然上述方法很好,也很容易使用,但建議你使用 journald 配置文件來控制日誌文件的清理過程,該文件存在於 /etc/systemd/journald.conf
。
systemd 為你提供了許多參數來有效管理日誌文件。通過組合這些參數,你可以有效地限制日誌文件所佔用的磁碟空間。讓我們來看看。
journald.conf 參數 | 描述 | 實例 |
---|---|---|
SystemMaxUse |
指定日誌在持久性存儲中可使用的最大磁碟空間 | SystemMaxUse=500M |
SystemKeepFree |
指定在將日誌條目添加到持久性存儲時,日誌應留出的空間量。 | SystemKeepFree=100M |
SystemMaxFileSize |
控制單個日誌文件在被輪換之前在持久性存儲中可以增長到多大。 | SystemMaxFileSize=100M |
RuntimeMaxUse |
指定在易失性存儲中可以使用的最大磁碟空間(在 /run 文件系統內)。 |
RuntimeMaxUse=100M |
RuntimeKeepFree |
指定將數據寫入易失性存儲(在 /run 文件系統內)時為其他用途預留的空間數量。 |
RuntimeMaxUse=100M |
RuntimeMaxFileSize |
指定單個日誌文件在被輪換之前在易失性存儲(在 /run 文件系統內)所能佔用的空間量。 |
RuntimeMaxFileSize=200M |
如果你在運行中的系統的 /etc/systemd/journald.conf
文件中添加這些值,那麼在更新文件後,你必須重新啟動 journald。要重新啟動,請使用以下命令。
sudo systemctl restart systemd-journald
核實日誌文件
在你清理完文件後,檢查日誌文件的完整性是比較明智的。要做到這一點,請運行下面的命令。該命令顯示了日誌文件是否通過(PASS
)、失敗(FAIL
)。
journalctl --verify
總結
希望本指南能幫助你了解 systemd 日誌管理流程的基本情況。通過這些,你可以通過限制空間、清除舊的日誌文件來管理系統或伺服器中的日誌文件所使用的磁碟空間。這些只是指導性的命令,你可以通過多種方式組合這些命令來實現你的系統需求。
via: https://www.debugpoint.com/systemd-journald-clean/
作者:Arindam 選題:lkxed 譯者:Chao-zhi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive