Centos

壓縮使用 cronolog 旋轉的日誌

  • July 27, 2012

我有一堆帶有 Apache 的伺服器(Centos 5.x),它們的日誌使用 cronolog 進行輪換。在一定時間後自動壓縮和刪除這些日誌的最佳策略是什麼?CustomLog “|/usr/sbin/cronolog /var/log/httpd/my.examplehost.com/access_log-%Y%m%d” 常見

我正在考慮創建一個 cron 腳本,它只是說

gzip /var/logs/httpd/my.examplehost.com/*

但這不是也嘗試壓縮apache目前正在寫入的文件嗎?在 cronolog 首頁上只提到你應該寫你的 cron 工作或類似的工作,但沒有關於如何做到這一點的說明。

Logrotate 確實是這項工作的工具,但如果你不能使用它,那麼你可以使用find-ctime patameter

find /var/logs/httpd/my.example.host.com/ -ctime +0 -not -name '*.gz' -exec gzip {} \; 

應該做你想做的事情,因為它會找到在 24 小時前更改但尚未壓縮的文件並壓縮它們。

為確保您正在處理的文件仍未打開,您可以執行以下操作

#!/bin/bash
for file in $(find /var/logs/httpd/my.example.host.com/ -ctime +0 -not -name '*.gz')
do
   lsof | grep $file
   if [$? -eq 1 ]
   then
       gzip $file
   fi
done

引用自:https://serverfault.com/questions/411763