如果你的Linux 發行版支援 systemd#,那麼從啟動時開始,它每秒鐘都會從系統的所有進程和應用程式中收集日誌。所有這些日誌事件都由 systemd 的 #journald
守護程式管理。 journald 收集所有的日誌(資訊、警告、錯誤等),並將其作為二進位資料儲存在磁碟檔案中。
由於日誌保留在磁碟中,而且每秒鐘都在收集,所以它佔用了巨大的磁碟空間;特別是對於舊的系統、伺服器。例如,在我的一個運行了一年左右的測試系統中,日誌檔案的大小是 GB 級的。
如果你管理多個系統、伺服器,建議一定要正確管理 journald 日誌,以便高效運作。讓我們來看看如何管理日誌檔案。
使用 systemd 的 journalctl
工具,你可以查詢這些日誌,對其進行各種操作。例如,查看不同啟動時的日誌文件,檢查特定進程或應用程式的最後警告和錯誤。如果你對這些不了解,我建議你在學習本指南之前先快速瀏覽一下此教學:使用 journalctl 查看和分析 systemd 日誌(附實例) 》。
systemd 的 journald 守護程式在每次啟動時都會收集日誌。這意味著,它根據啟動情況對日誌檔案進行分類。
日誌以二進位形式儲存在路徑 /var/log/journal
,資料夾為機器 ID。
比如說:
日誌檔案位置的截圖-1
日誌檔案位置的截圖-2
另外,請記住,根據系統配置,運行時日誌檔案被儲存在 /run/log/journal/
。而這些在每次啟動時都會被刪除。
你可以,但不要這樣做。相反,請按照下面的說明,使用 journalctl
工具清除日誌檔案以釋放磁碟空間。
打開一個終端,執行以下命令。
journalctl --disk-usage
這應該為你提供系統中的日誌檔案實際使用的數量。
journalctl 磁碟使用指令
如果你有一個圖形化的桌面環境,你可以開啟檔案管理器,瀏覽路徑/var/log/journal
,並檢查屬性。
清理日誌檔案的有效方法應該是透過 #journald.conf
設定檔來完成。正常情況下,即使 journalctl
提供了刪除日誌檔案的工具,你也不應該手動刪除這些檔案。
让我们来看看如何 手动 删除它,然后我将解释 journald.conf
中的配置变化,这样你就不需要时不时地手动删除文件;相反,systemd 会根据你的配置自动处理它。
首先,你必须 flush
和 rotate
日志文件。轮换rotate是将当前活动的日志文件归档,并立即开始创建一个新的日志文件继续记录日志。冲洗flush 开关要求日志守护进程将存储在 /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 参数 | 描述 | 实例 |
| 指定日志在持久性存储中可使用的最大磁盘空间 | |
| 指定在将日志条目添加到持久性存储时,日志应留出的空间量。 |
|
| 控制單一日誌檔案在被輪換之前在持久性儲存中可以增長到多大。 |
|
| 指定在揮發性儲存中可以使用的最大磁碟空間(在 |
|
| 指定將資料寫入易失性儲存體(在 |
|
| 指定单个日志文件在被轮换之前在易失性存储(在 | |
如果你在运行中的系统的 /etc/systemd/journald.conf
文件中添加这些值,那么在更新文件后,你必须重新启动 journald。要重新启动,请使用以下命令。
sudo systemctl restart systemd-journald
在你清理完文件后,检查日志文件的完整性是比较明智的。要做到这一点,请运行下面的命令。该命令显示了日志文件是否通过(PASS
)、失败(FAIL
)。
journalctl --verify
验证日志文件
希望本指南能帮助你了解 systemd 日志管理流程的基本情况。通过这些,你可以通过限制空间、清除旧的日志文件来管理系统或服务器中的日志文件所使用的磁盘空间。这些只是指导性的命令,你可以通过多种方式组合这些命令来实现你的系统需求。
以上是systemd 日誌維護指南(附實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!