堕落不振功业废,勤耕不辍日月新

記錄檔管理工具 – logrotate

C/C++ hailen 12℃

記錄檔在遇到問題時, 對於找出出問題及除錯十分有用。但由於記錄檔不斷儲存後, 所佔用的硬碟空間會越來越多, 所以便有了紀錄檔輪替的工具, 而 logrotate 便是 RHEL / CentOS 下的預設記錄檔輪替工具。

logrotate 預設會每天自動執行, 執行時會根據設定檔 /etc/logrotate.conf 對指定的記錄檔輪替, 可以是每天、每星期、按檔案大小等自動輪替, 以及會舊有的記錄檔會保存多久。

/etc/logrotate.conf 內設定了會 include 目錄 /etc/logrotate.d 的檔案, 可以將個別記錄檔的輪替設定, 在這個目錄建立新的檔案設定, 對日後的管理也較方便。

以 httpd 為例, 它的輪替設定檔在 /etc/logrotate.d/httpd, 開啟這個檔案可以查看設定的方法:

/opencli.com/terminal

  • # vi /etc/logrotate.d/httpd

以下是 /etc/logrotate.d/httpd 的內容:

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

第一行 /var/log/httpd/*log 表示 /var/log/httpd/ 目錄下, 所有以 “log” 結尾的檔案, 以及不是空白的檔案進行輪替。

而 postrotate 及 endscript 中間的指令 (上面例子是重新載入 httpd 服務), 表示當有記錄檔進行輪替後, 會執行的指令。

以上例子沒有對記錄檔輪替進行設定, 所以會使用 /etc/logrotate.conf 的設定。

以下是一些常用設定可以自訂:

rotate:

保留多少份舊記錄檔, 預設值是 4 份舊記錄, 如果想改成 7 份舊記錄, 改成這樣:

/var/log/httpd/*log {
    rotate 7
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

輪替間隔:

預設值是 “weekly”, 即每星期輪替一次, 可以有以下設定:

daily (每天)
weekly (每星期)
monthly (每月)
yearly (每年)

檔案大小:

另一個輪替方法是按記錄檔的體積大小, 以下是 100KB, 100MB 及 100GB 的語法:

size 100k
size 100M
size 100G

如果要將舊記錄檔用 gzip 壓縮, 可以加入以下一行:

compress

logrotate 的設定只要儲存設定檔後, 不用重啟服務, 會立即生效。

以上是 logrotate 的常用設定方法。

The post 記錄檔管理工具 – logrotate appeared first on Linux 技術手札.

转载请注明:我是IT » 記錄檔管理工具 – logrotate

喜欢 (0)or分享 (0)