如何在Linux中處理龐大(且不斷增長)的日誌文件

如果您已經長時間運行Linux服務器,那麼您將熟悉日誌文件的問題。 有時它們甚至很難找到它們,然後您有時會遇到一個大小為數百MB(甚至GB)的文件。 搜索它很痛苦,它們甚至可能會耗盡您的存儲空間。

本文將向您展示如何處理此問題。 我們將使用已經存在的內置Linux syslog軟件包。 這意味着您不需要安裝新軟件包! 您只需要為自己的日誌文件添加配置即可。

Linux日誌如何與logrotate一起旋轉

在以下位置有幾個系統日誌文件:

/var/log/

在下面的屏幕截圖中,我們將列出此目錄中的所有文件,並以MB為單位顯示文件大小:

如您所見,有許多已過時的大型日誌文件。 它們默認情況下是“ logrotate”生成的。 查看時間戳記,我們可以看到它們每7天產生一次。 因此,對於此處的每個日誌文件,logrotate都會執行以下操作:

  1. 重命名帶有時間戳的日誌文件
  2. 使用與以前相同的名稱創建一個新的空日誌文件

檢查默認的Logrotate配置

Logrotate檢查以下文件的配置:

/etc/logrotate.conf

在此我們可以看到他收到了有關以下方面的所有重要信息:

  1. 他應該多久旋轉一次雜誌
  2. 保留多少備份
  3. 他應該在舊雜誌上加上什麼後綴
  4. 他們是否需要擠壓他們
  5. 等等…

這是logrotate配置文件的屏幕截圖:

如何在Linux中處理龐大(且不斷增長)的日誌文件

默認情況下,不壓縮舊的日誌文件。 您可以通過簡單地取消注釋“ compress”指令(如上所示)來更改此設置。

添加文件進行logrotate

logrotate如何知道要使用哪些日誌? 該目錄中的文件:

/etc/logrotate.d

例如,在第一個屏幕截圖中看到的“安全”日誌中,我們可以使用簡單的grep命令找出logrotate.d文件中的哪個文件,如高級grep指南中所述:

grep -r secure /etc/logrotate.d

下面的屏幕截圖顯示了哪個文件負責“安全”日誌:

如何在Linux中處理龐大(且不斷增長)的日誌文件

打開“ syslog”,我們看到它告訴logrotate在多個文件上工作:

如何在Linux中處理龐大(且不斷增長)的日誌文件

它們都位於/ var / log /路徑中。 因此,每個文件包含:

  1. 它應該輪換的日誌文件的名稱
  2. 特定於此特定文件的指令
  3. 在沒有指令的情況下,將使用logrotate.conf的默認值

為日誌創建自己的Logrotate文件

我們可以按照上述模式創建一個帶有logrotate的條目,該條目告訴我們它以相同的方式處理我們自己的文件。

獲取目錄的所有者和組

為了確保設置了所有權限,我們需要使用適當的權限運行logrotate。 轉到包含要處理的日誌文件的目錄,並使用以下命令獲取所有者和組:

ls -l -d

例如,/ var / log目錄的所有者為“ root”,組為“ root”:

如何在Linux中處理龐大(且不斷增長)的日誌文件

創建一個Logrotate配置文件

然後在/etc/logrotate.d/中創建一個新文件,並將以下配置粘貼到其中:

/var/log/newlogfile {

size 10M

compress

delaycompress

su root root

}

將/ var / log / newlogfile替換為您自己的日誌文件的位置。 另外,將su root root替換為您在上一步中獲得的所有者和組名。 這是您可以使用的logrotate指令的列表。 delaycompress指令告訴logrotate僅壓縮具有兩個或更舊版本的文件。 這樣,您可以快速輕鬆地訪問上一個壓縮日誌文件。

您還可以在大括號塊中使用以下幾行來旋轉日誌文件之前和之後運行腳本:

postrotate
// скрипты для ротации журналов
endscript

如您所見,Linux具有旋轉日誌文件的完整解決方案。 您所要做的就是在現有結構中添加幾行代碼,並且可以自由旋轉自己的日誌文件!

請禁用您的廣告攔截器或將此網站列入白名單!

Sidebar