ubuntu-server-10-04:logrotate
Logrotate でログ保存
Fetchmail や Procmail がログを出力するが、放置しておくと巨大なファイルになってしまうので、Ubuntu に標準で入っている Logrotate を使って、ログファイルのローテートと削除を行う。今回ローテートするログファイルは、ユーザ権限で作成されているファイルなので、ユーザ権限で Logrotate を起動する。
用意するファイルとディレクトリ
- logrotate.conf: ローテートの標準設定を記述したファイル
- logrotate.d: 詳しい設定を記述したファイルを格納するディレクトリ
- logrotate.sh: logrotate コマンドを記述したスクリプト
logrotate.conf の作成
システムログのローテート設定をコピーして作成。
~/log/logrotate.conf あたりに作成。
# see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress # packages drop log rotation information into this directory include /home/foobar/log/logrotate.d
- include のパスは後で作成する logrotate.d ディレクトリのパス
logrotate.d の作成
logrotate.d ディレクトリを作成する。
mkcdir ~/log/logrotate.d/
logrotate.d ディレクトリの中に、各デーモンごとのログローテート設定をファイルに記述して保存する。
Fetchmail のログの場合はこんな感じで。
~/log/logrotate.d/fetchmail
/home/foobar/log/fetchmail.log { daily rotate 30 compress delaycompress notifempty create 640 foobar users }
- 最初の行: 出力されるログファイルのパス
- daily: 24時間でファイルをローテート
- rotate 30: 30個までローテートし、31個目は削除
- compress: ローテートファイルを圧縮する
- delaycompress: ローテート直後のファイルは圧縮しない
- notifempty: ログファイルが存在しない場合は空ファイルを作成
- create 640 foobar users: 作成するログのパーミッションとオーナとユーザを設定
ローテートしたいログファイル分設定ファイルを作成して、logrotate.d に格納しておく。
logrotate.sh
Logrotate を起動するスクリプト。このスクリプトを cron で実行する。
#!/bin/sh test -x /usr/sbin/logrotate || exit 0 /usr/sbin/logrotate --state /home/foobar/log/logrotate.status /home/foobar/log/logrotate.conf
cron に設定
$ crontab -e
以下の行を追加
<code> # Loglotate 0 0 * * * /home/foobar/log/logrotate.sh > /dev/null 2>&1 <code>
ubuntu-server-10-04/logrotate.txt · 最終更新: 2010/10/30 13:39 by admin