systemd 日志維護(hù)指南(附實例)

如果你的 Linux 發(fā)行版支持 ??systemd???,那么從啟動時開始,它每秒鐘都會從系統(tǒng)的所有進(jìn)程和應(yīng)用程序中收集日志。所有這些日志事件都由 systemd 的 ??journald?? 守護(hù)程序管理。journald 收集所有的日志(信息、警告、錯誤等),并將其作為二進(jìn)制數(shù)據(jù)存儲在磁盤文件中。
由于日志保留在磁盤中,而且每秒鐘都在收集,所以它占用了巨大的磁盤空間;特別是對于舊的系統(tǒng)、服務(wù)器來說。例如,在我的一個運行了一年左右的測試系統(tǒng)中,日志文件的大小是 GB 級的。
如果你管理多個系統(tǒng)、服務(wù)器,建議一定要正確管理 journald 日志,以便高效運行。讓我們來看看如何管理日志文件。
systemd 日志維護(hù)
使用 systemd 的 ??journalctl?? 工具,你可以查詢這些日志,對其進(jìn)行各種操作。例如,查看不同啟動時的日志文件,檢查特定進(jìn)程或應(yīng)用程序的最后警告和錯誤。如果你對這些不了解,我建議你在學(xué)習(xí)本指南之前先快速瀏覽一下此教程:??使用 journalctl 查看和分析 systemd 日志(附實例)?? 》。
物理日記的日志文件在哪里?
systemd 的 journald 守護(hù)進(jìn)程在每次啟動時都會收集日志。這意味著,它根據(jù)啟動情況對日志文件進(jìn)行分類。
日志以二進(jìn)制形式存儲在路徑 ??/var/log/journal??,文件夾為機(jī)器 ID。
比如說:

日志文件位置的截圖-1

日志文件位置的截圖-2
另外,請記住,根據(jù)系統(tǒng)配置,運行時日志文件被存儲在 ??/run/log/journal/??。而這些在每次啟動時都會被刪除。
我可以手動刪除日志文件嗎?
你可以,但不要這樣做。相反,請按照下面的說明,使用 ??journalctl?? 工具清除日志文件以釋放磁盤空間。
systemd 的日志文件占用了多少磁盤空間?
打開一個終端,運行以下命令。
這應(yīng)該為你提供系統(tǒng)中的日志文件實際使用的數(shù)量。

journalctl 磁盤使用命令
如果你有一個圖形化的桌面環(huán)境,你可以打開文件管理器,瀏覽路徑 ??/var/log/journal??,并檢查屬性。
systemd 日志清理過程
清理日志文件的有效方法應(yīng)該是通過 ??journald.conf?? 配置文件來完成。正常情況下,即使 ??journalctl?? 提供了刪除日志文件的工具,你也不應(yīng)該手動刪除這些文件。
讓我們來看看如何 ??手動?? 刪除它,然后我將解釋 ??journald.conf?? 中的配置變化,這樣你就不需要時不時地手動刪除文件;相反,systemd 會根據(jù)你的配置自動處理它。
手動刪除
首先,你必須 ??flush?? 和 ??rotate?? 日志文件。輪換rotate是將當(dāng)前活動的日志文件歸檔,并立即開始創(chuàng)建一個新的日志文件繼續(xù)記錄日志。沖洗flush 開關(guān)要求日志守護(hù)進(jìn)程將存儲在 ??/run/log/journal/?? 中的所有日志數(shù)據(jù)沖入 ??/var/log/journal/??,如果持久性存儲被啟用的話。
然后,在 ??flush?? 和 ??rotate?? 之后,你需要用 ??vacuum-size??、??vacuum-time?? 和 ??vacuum-files?? 選項運行 ??journalctl?? 來強(qiáng)制 systemd 清除日志。
例 1:
上面這組命令會刪除所有存檔的日志文件,直到最后一秒。這有效地清除了一切。因此,在運行該命令時要小心。

日志清理-例子
清理完畢后:

清理后--日志的占用空間
你也可以根據(jù)你的需要在 ??--vacuum-time?? 的數(shù)字后面提供以下后綴:
- ?
?s??:秒 - ?
?m??:分鐘 - ?
?h??:小時 - ?
?days??:天 - ?
?months??:月 - ?
?weeks??:周 - ?
?years??:年 
例 2:
這將清除所有存檔的日志文件,并保留最后 400MB 的文件。記住這個開關(guān)只適用于存檔的日志文件,不適用于活動的日志文件。你也可以使用后綴,如下所示。
- ?
?K??:KB - ?
?M??:MB - ?
?G??:GB 
例 3:
??vacuum-files?? 選項會清除所有低于指定數(shù)量的日志文件。因此,在上面的例子中,只有最后兩個日志文件被保留,其他的都被刪除。同樣,這只對存檔的文件有效。
如果你愿意,你可以把兩種選項結(jié)合起來,但我建議不要這樣做。然而,如果同時使用兩個選項,請確保先用 ??--rotate?? 選項運行。
使用配置文件自動刪除
雖然上述方法很好,也很容易使用,但建議你使用 journald 配置文件來控制日志文件的清理過程,該文件存在于 ??/etc/systemd/journald.conf??。
systemd 為你提供了許多參數(shù)來有效管理日志文件。通過組合這些參數(shù),你可以有效地限制日志文件所占用的磁盤空間。讓我們來看看。
journald.conf 參數(shù)  | 描述  | 實例  | 
?  | 指定日志在持久性存儲中可使用的最大磁盤空間  | ?  | 
?  | 指定在將日志條目添加到持久性存儲時,日志應(yīng)留出的空間量。  | ?  | 
?  | 控制單個日志文件在被輪換之前在持久性存儲中可以增長到多大。  | ?  | 
?  | 指定在易失性存儲中可以使用的最大磁盤空間(在 ?  | ?  | 
?  | 指定將數(shù)據(jù)寫入易失性存儲(在 ?  | ?  | 
?  | 指定單個日志文件在被輪換之前在易失性存儲(在 ?  | ?  | 
如果你在運行中的系統(tǒng)的 ??/etc/systemd/journald.conf?? 文件中添加這些值,那么在更新文件后,你必須重新啟動 journald。要重新啟動,請使用以下命令。
核實日志文件
在你清理完文件后,檢查日志文件的完整性是比較明智的。要做到這一點,請運行下面的命令。該命令顯示了日志文件是否通過(??PASS??)、失?。??FAIL??)。

驗證日志文件
總結(jié)
希望本指南能幫助你了解 systemd 日志管理流程的基本情況。通過這些,你可以通過限制空間、清除舊的日志文件來管理系統(tǒng)或服務(wù)器中的日志文件所使用的磁盤空間。這些只是指導(dǎo)性的命令,你可以通過多種方式組合這些命令來實現(xiàn)你的系統(tǒng)需求。















 
 
 







 
 
 
 