ユーザ用ツール

サイト用ツール


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