ログがcronologでローテーションされているApacheを備えたサーバー(Centos 5.x)がたくさんあります。一定時間後にこれらのログを自動的に圧縮および削除するための最良の戦略は何ですか? CustomLog "|/usr/sbin/cronolog /var/log/httpd/my.examplehost.com/access_log-%Y%m%d" common
私はちょうど言うcronスクリプトを作成することを考えていました
gzip /var/logs/httpd/my.examplehost.com/*
しかし、それはApacheが現在書き込んでいるファイルも圧縮しようとしませんか? cronologのホームページには、cronジョブなどに書き込む必要があるとだけ記載されていますが、その方法についての説明はありません。
Logrotateは実際にはこのジョブのツールですが、使用できない場合は、find
と-ctime
パターンメーターを使用できます。
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