SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【linux】蓄積されていくログファイルなどを定期的に削除する例

問題

毎日1つファイルができるタイプのログがあるのですが、ディスクを圧迫するので、1か月分ぐらい残して定期的に削除したいです。

log-yyyymmdd

答え

findコマンドでできる。

よくある -exec オプションを使った書き方だと、

find /path/to/log -name '*.log' -mtime +30 -exec rm {} \;

なお、findコマンドは -delete オプションが使えるなら、そちらの方が高速らしい。見た目もすっきり。

find /path/to/log -name '*.log' -mtime +30 -delete

tmpwatchコマンドが使える環境なら、こちらも便利。詳細はマニュアルを参照されたし。下記の例は更新日が720時間以上古いファイルを削除する。

tmpwatch -m 720 /path/to/log

必要なものも削除しないか心配なときは、一度テストしてから(-t オプション)。

tmpwatch -mt 720 /path/to/log

ディレクトリを消したくないときは、ディレクトリを除外。

tmpwatch -d -m 720 /path/to/log

そしてこれをcrontabなどに設定。

# 例えば、日曜日AM3時に削除
0 3 * * 0 find /path/to/log -name '*.log' -mtime +30 -delete

これで自動的に消えていきます。

関連するメモ

コメント