systemd 日志維護指南(附實例)
如果你的 Linux 發(fā)行版支持 ??systemd???,那么從啟動時開始,它每秒鐘都會從系統(tǒng)的所有進程和應用程序中收集日志。所有這些日志事件都由 systemd 的 ??journald?
? 守護程序管理。journald 收集所有的日志(信息、警告、錯誤等),并將其作為二進制數(shù)據(jù)存儲在磁盤文件中。
由于日志保留在磁盤中,而且每秒鐘都在收集,所以它占用了巨大的磁盤空間;特別是對于舊的系統(tǒng)、服務器來說。例如,在我的一個運行了一年左右的測試系統(tǒng)中,日志文件的大小是 GB 級的。
如果你管理多個系統(tǒng)、服務器,建議一定要正確管理 journald 日志,以便高效運行。讓我們來看看如何管理日志文件。
systemd 日志維護
使用 systemd 的 ??journalctl?
? 工具,你可以查詢這些日志,對其進行各種操作。例如,查看不同啟動時的日志文件,檢查特定進程或應用程序的最后警告和錯誤。如果你對這些不了解,我建議你在學習本指南之前先快速瀏覽一下此教程:??使用 journalctl 查看和分析 systemd 日志(附實例)?? 》。
物理日記的日志文件在哪里?
systemd 的 journald 守護進程在每次啟動時都會收集日志。這意味著,它根據(jù)啟動情況對日志文件進行分類。
日志以二進制形式存儲在路徑 ??/var/log/journal?
?,文件夾為機器 ID。
比如說:
日志文件位置的截圖-1
日志文件位置的截圖-2
另外,請記住,根據(jù)系統(tǒng)配置,運行時日志文件被存儲在 ??/run/log/journal/?
?。而這些在每次啟動時都會被刪除。
我可以手動刪除日志文件嗎?
你可以,但不要這樣做。相反,請按照下面的說明,使用 ??journalctl?
? 工具清除日志文件以釋放磁盤空間。
systemd 的日志文件占用了多少磁盤空間?
打開一個終端,運行以下命令。
這應該為你提供系統(tǒng)中的日志文件實際使用的數(shù)量。
journalctl 磁盤使用命令
如果你有一個圖形化的桌面環(huán)境,你可以打開文件管理器,瀏覽路徑 ??/var/log/journal?
?,并檢查屬性。
systemd 日志清理過程
清理日志文件的有效方法應該是通過 ??journald.conf?
? 配置文件來完成。正常情況下,即使 ??journalctl?
? 提供了刪除日志文件的工具,你也不應該手動刪除這些文件。
讓我們來看看如何 ??手動?? 刪除它,然后我將解釋 ??journald.conf?
? 中的配置變化,這樣你就不需要時不時地手動刪除文件;相反,systemd 會根據(jù)你的配置自動處理它。
手動刪除
首先,你必須 ??flush?
? 和 ??rotate?
? 日志文件。輪換rotate是將當前活動的日志文件歸檔,并立即開始創(chuàng)建一個新的日志文件繼續(xù)記錄日志。沖洗flush 開關要求日志守護進程將存儲在 ??/run/log/journal/?
? 中的所有日志數(shù)據(jù)沖入 ??/var/log/journal/?
?,如果持久性存儲被啟用的話。
然后,在 ??flush?
? 和 ??rotate?
? 之后,你需要用 ??vacuum-size?
?、??vacuum-time?
? 和 ??vacuum-files?
? 選項運行 ??journalctl?
? 來強制 systemd 清除日志。
例 1:
上面這組命令會刪除所有存檔的日志文件,直到最后一秒。這有效地清除了一切。因此,在運行該命令時要小心。
日志清理-例子
清理完畢后:
清理后--日志的占用空間
你也可以根據(jù)你的需要在 ??--vacuum-time?
? 的數(shù)字后面提供以下后綴:
- ?
?s?
?:秒 - ?
?m?
?:分鐘 - ?
?h?
?:小時 - ?
?days?
?:天 - ?
?months?
?:月 - ?
?weeks?
?:周 - ?
?years?
?:年
例 2:
這將清除所有存檔的日志文件,并保留最后 400MB 的文件。記住這個開關只適用于存檔的日志文件,不適用于活動的日志文件。你也可以使用后綴,如下所示。
- ?
?K?
?:KB - ?
?M?
?:MB - ?
?G?
?:GB
例 3:
??vacuum-files?
? 選項會清除所有低于指定數(shù)量的日志文件。因此,在上面的例子中,只有最后兩個日志文件被保留,其他的都被刪除。同樣,這只對存檔的文件有效。
如果你愿意,你可以把兩種選項結(jié)合起來,但我建議不要這樣做。然而,如果同時使用兩個選項,請確保先用 ??--rotate?
? 選項運行。
使用配置文件自動刪除
雖然上述方法很好,也很容易使用,但建議你使用 journald 配置文件來控制日志文件的清理過程,該文件存在于 ??/etc/systemd/journald.conf?
?。
systemd 為你提供了許多參數(shù)來有效管理日志文件。通過組合這些參數(shù),你可以有效地限制日志文件所占用的磁盤空間。讓我們來看看。
journald.conf 參數(shù) | 描述 | 實例 |
? | 指定日志在持久性存儲中可使用的最大磁盤空間 | ? |
? | 指定在將日志條目添加到持久性存儲時,日志應留出的空間量。 | ? |
? | 控制單個日志文件在被輪換之前在持久性存儲中可以增長到多大。 | ? |
? | 指定在易失性存儲中可以使用的最大磁盤空間(在 ? | ? |
? | 指定將數(shù)據(jù)寫入易失性存儲(在 ? | ? |
? | 指定單個日志文件在被輪換之前在易失性存儲(在 ? | ? |
如果你在運行中的系統(tǒng)的 ??/etc/systemd/journald.conf?
? 文件中添加這些值,那么在更新文件后,你必須重新啟動 journald。要重新啟動,請使用以下命令。
核實日志文件
在你清理完文件后,檢查日志文件的完整性是比較明智的。要做到這一點,請運行下面的命令。該命令顯示了日志文件是否通過(??PASS?
?)、失?。??FAIL?
?)。
驗證日志文件
總結(jié)
希望本指南能幫助你了解 systemd 日志管理流程的基本情況。通過這些,你可以通過限制空間、清除舊的日志文件來管理系統(tǒng)或服務器中的日志文件所使用的磁盤空間。這些只是指導性的命令,你可以通過多種方式組合這些命令來實現(xiàn)你的系統(tǒng)需求。