このページを正しく表示するにはJavascriptを有効にしてください。
古いログファイルを自動でメンテナンスする
サーバーのログ(Apache, スクリプトログ)が溜まりすぎて容量圧迫していたので、
自動でメンテナンスできるようcronジョブ設定しました。
#!/usr/bin/env bash
# ($LOG_FILE_DIR を定義しとく)
# 約1ヶ月以上前のファイルは削除
find $LOG_FILE_DIR -mtime +31 -delete
# 一週間前のログファイル(ファイル名末尾がlog)はgzipで圧縮する
find $LOG_FILE_DIR -mtime +7 -name "*log" -exec gzip {} \;
こんな感じでログを圧縮・削除するスクリプトを作成(delete_log.sh)
とりあえず無圧縮のログを一週間で圧縮して保持するようにし、
さらに1ヶ月経ったログは自動削除することにしました。
0 3 * * * sh $HOME/batch/delete_log.sh
このシェルスクリプトをcronに設定します。
タイミングはユーザーが少ない真夜中にして負荷がかからないようにしてます。
findコマンドでタイムスタンプによる仕分けが出来るので、
思ったほど難しくなくログのメンテナンスが出来ました。