目次

Logrotate でログ保存

Fetchmail や Procmail がログを出力するが、放置しておくと巨大なファイルになってしまうので、Ubuntu に標準で入っている Logrotate を使って、ログファイルのローテートと削除を行う。今回ローテートするログファイルは、ユーザ権限で作成されているファイルなので、ユーザ権限で 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

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
}

ローテートしたいログファイル分設定ファイルを作成して、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>