Contents

Linux 上的磁碟空間不足?檢查您的日誌!

### 快速鏈接

⭐為什麼日誌佔用這麼多磁碟空間?

⭐查找您的日誌

⭐Linux 如何輪換日誌文件

⭐哪些日誌可以安全刪除?

⭐如何修復日誌填滿的問題

要點

眾所周知,Linux 作業系統會產生大量日誌數據,這可能會消耗硬碟或固態硬碟上的大量儲存容量。

您的系統機制通常採用一種壓縮存檔日誌的方法,以節省裝置上的儲存容量。

使用“journalctl”或“tail-f”命令可以仔細閱讀日誌條目並找出潛在的破壞性進程,從而實現高效的故障排除和問題解決。

儘管人們認為 Linux 系統精簡高效,但用戶偶爾可能會遇到可用儲存以意想不到的速度耗盡的情況。透過檢查系統日誌檔案來確定此類事件發生的根本原因至關重要。這些記錄可以提供有關潛在原因的寶貴見解,並為如何有效解決這些問題提供指導。

為什麼日誌佔用如此多的磁碟空間?

日誌檔案透過提供對 Linux 系統操作的洞察並能夠對遇到的任何問題進行故障排除,在維護 Linux 系統中發揮著至關重要的作用。與 Windows 上的事件檢視器類似,Linux 日誌守護程式提供了一種監視系統活動和診斷問題的方法。值得注意的是,日誌檔案通常不會消耗大量儲存空間,因為大多數發行版都有適當的機制來調節其磁碟使用量。

過去,Linux 日誌檔案通常由純文字資料組成。然而,隨著越來越多的知名發行版轉向使用 systemd 來管理其作業系統,這些日誌檔案現在以二進位形式存在,並由journald 監督,而journald 本身就是一個systemd 服務。根據所使用的特定發行版,可以採用 rsyslog 或 syslog-ng 作為處理此類日誌資料的替代方法。

為了節省電腦硬碟上的儲存容量,系統定期歸檔和刪除不再相關或不再必要的過時日誌檔案是常見的做法。此過程涉及壓縮和刪除較舊的數據,以便為可能更重要的最新資訊騰出空間。

通常假設日誌檔案不佔用大量儲存容量;但是,異常操作產生日誌條目的速度可能超出系統有效輪換和管理日誌條目的能力。

如果您發現可用磁碟空間意外減少,並且無法識別任何最近的大量文件下載是此問題的根源,則可能是 Linux 系統日誌中的資料累積造成的。為了解決這個困境,您需要確定消耗寶貴儲存空間的系統日誌的具體內容,並實施必要的糾正措施。

當與“-h”選項一起呼叫時,“du”命令是確定係統上指定目錄或多個目錄中的檔案和目錄目前使用的磁碟空間量的有效方法。

 du -h /var/log 

您將看到所有子目錄的枚舉,以及它們的累積儲存容量:

/bc/images/du-h-var-log.png

尋找你的日誌

使用採用 systemd 的現代 Linux 發行版需要 JournalTL(journalt)實用程式來檢查日誌資料。這些日誌的儲存位置取決於特定的作業系統變體,可以在「/var/log/journal」目錄或「/run/log/journal」目錄中找到,這兩個目錄通常位於根檔案系統磁碟區。

/bc/images/journalctl-logs.png

若要使用終端存取記錄文件,請在命令提示字元中輸入“journald”。此外,還有幾種方便的命令列替代方案可用於特定目的。例如,若要查看啟動訊息,請使用“-b”選項:

 journalctl -b 

使用「-f」標誌使用戶能夠以即時、最新的方式仔細閱讀系統記錄的訊息。

如果您的作業系統使用與 systemd 不同的啟動機制,則日誌檔案將位於/var/log 目錄中。相反,即使使用 systemd,某些應用程式也可能繼續在此資料夾中保留其日誌資料。日誌文件是未經修飾的文本文檔,可以使用傳統的分頁工具(例如“less”)進行閱讀。

例如,讀取系統日誌:

 less /var/log/syslog

日誌檔案中的完整資訊(包含可能有數千行的行)將顯示供您細讀。

/bc/images/journactl-f.png

人們還可以透過使用 tail 命令的「-f」修飾符,在終端機或命令提示字元上執行適當的命令來即時觀察其進度。

 tail -f /var/log/syslog

Linux 如何輪換日誌文件

/bc/images/logrotate-service.png

/var/log 目錄中存在以「log.N.gz」結尾的標籤的檔案(其中 N 代表算術值),表示系統歸檔過時記錄的機制正在運作。通常,大多數作業系統都包含一個名為“logrotate”的軟體應用程序,它可以自主執行此功能。 Logrotate 可以設定為由 cron 守護程式啟動的排程任務執行或透過 systemd 計時器觸發。

Logrotate 通常在大多數發行版中每天都會激活,其主要功能是透過利用 gzip 技術來壓縮存檔日誌文件,可以透過壓縮檔案中附加的「.gz」檔案副檔名來識別。 Logrotate 使用特定的閾值(例如年齡或檔案大小)來確定何時應進行壓縮,同時也實現了一個額外的閾值以從系統中清除過時的日誌檔案。

logrotate 的標準設定應該足以滿足大多數桌面使用者的需求。然而,尋求調整其功能的人可以透過以監督身分更改位於「/etc/logrotate.conf」的設定檔來實現。此外,必須考慮修改系統的 cron 調度或 systemd 計時器配置,這通常屬於伺服器管理員的權限範圍。

您最好修復填充日誌的內容,而不是調整設定檔以節省磁碟空間。如果您絕對必須更改配置,您可以閱讀 logrotate 手冊頁

哪些日誌可以安全刪除?

/bc/images/var-log.png

在必須檢索額外儲存且已用盡標準程式的情況下,可以考慮消除使用 gzip 壓縮的日誌檔案(由檔案副檔名「.gz」表示)。然而,由於這些檔案與系統的功能有關,因此必須在特權使用者的授權下將其刪除。命令“rm”可用於此目的,需要管理權限才能有效執行。

 sudo rm /var/syslog/syslog.*gz 

該指令將刪除名稱中包含“syslog”並以“.gz”結尾的所有檔案。

當使用「sudo」指令執行潛在有害或破壞性的操作(例如使用「rm」刪除檔案)時,務必格外小心和謹慎,以避免因使用不當而導致任何意外後果。

通常建議在未徹底了解潛在後果的情況下不要從系統目錄中刪除文件,但只要存檔日誌文件不存在,刪除它們就不會導致任何問題。但是,如果出現問題,可能需要從先前的日誌記錄中檢索資訊以進行故障排除。

如何修復日誌填滿的問題

確定日誌檔案內容的有效方法是利用journalctl或tail-f指令,特別注意日誌檔案中可能出現的任何重複出現的錯誤訊息。

為了緩解磁碟空間不足的問題,有必要識別並終止負責消耗儲存的錯誤進程。如果問題根源仍不清楚,諮詢線上資源或從作業系統的支援管道尋求協助可能會有所幫助。一旦解決了根本原因,消除過時的日誌檔案將釋放額外的儲存容量,而不會帶來風險。修正此問題後,您應該會發現可用磁碟空間顯著增加。