Logrotate
関連記事
https://fedorahosted.org/logrotate/ より:
- ログファイルが大量に生成されるシステムで、ログファイルの管理を簡単にするために logrotate ユーティリティは作られました。Logrotate はログファイルの自動的なローテーション圧縮や削除、メール送信などを可能にします。Logrotate を設定することで、ログファイルを毎日毎周毎月ごとに管理したり、特定のサイズまで達した時の動作を決められます。
logrotate のローテーションでは、既存のログファイルに数字を割り振って名前を変更し、元の空のログファイルを再作成します。例えば、/var/log/syslog.log
は /var/log/syslog.log.1
に名前が変更されます。/var/log/syslog.log.1
が既に存在する場合、名前は /var/log/syslog.log.2
に変更されます (バックログの数は設定で変えられます)。
インストール
logrotate は公式リポジトリに含まれており、base グループのメンバーとしてデフォルトでインストールされます。
logrotate はもはや cron ジョブを使用しません。代わりに systemd タイマーを使います: systemctl status logrotate.timer
。
設定
logrotate の一番重要な設定ファイルは /etc/logrotate.conf
です。また、/etc/logrotate.d
ディレクトリには他の設定ファイルが含まれています。
トラブルシューティング
ログがローテーションされない
cron ジョブによってログがローテーションされない場合、user
や group
の所有者が間違っている可能性があります。どちらも root
である必要があります。この問題を修正するには以下を実行:
# chown root:root /etc/logrotate.conf # chown -R root:root /etc/logrotate.d
もしくは、/etc/logrotate.conf
で使いたいユーザーとグループに su
変数を設定してください。
exim のログがローテーションされない
/etc/logrotate.conf
に olddir
変数を設定した場合、以下のようなメッセージが表示されます:
error: failed to rename /var/log/exim/mainlog to /var/log/old/mainlog.1: Permission denied
この問題を修正するには、ユーザー exim
をグループ log
に追加してください。そして olddir
(/var/log/old
) のグループをデフォルトの root
から log
に変更してください。