ESC

ログをローテーションさせる。

TurboLinux 7 Server & 8 Serverにて。

cron.daily ー logrotate
         ↓
        /etc/logrotate.confを読み込んで実行するためのシェルスクリプト


/etc/logrotate.conf内での設定項目

  1. compress
    ローテーションされたログをgzipで圧縮
    ここが有効でないと、ローテートされるたびに、過去ログはすべて削除されることになる。ここで有効にしておけば、各スクリプト内で指定する必要はなし。
  2. rotate n
    nに入れた数字の週だけ保存される。(デフォルトは4みたい)


logrotate.conf内で、ローテートの感覚をweeklyにしておくと、cronで毎日実行されても、ローテーションはされないようだ。


logrotateで実行するスクリプトの格納場所は
/etc/logrotate.d以下。
ファイル名は何でも良く、この下にあるスクリプトは実行される。
でも、なんのためのローテーションかわかりやすいファイル名をつけるべきですな。


基本的な記述

/var/log/httpd/access_log {
  missingok #ファイルがなくても無視
  postrotate #ローテート後に以下のスクリプトを実行
   /usr/bin/killall -HUP httpd  #httpdのプロセスにHUPを投げる
  endscript #ここまでのスクリプトを実行
}


一度に複数のファイルを指定する場合

/var/log/httpd/access_log /var/log/httpd/error_log {
  missingok
  sharedscripts ←複数のログファイルを指定する場合は必要
  postrotate
   /usr/bin/killall -HUP httpd
  endscript
}

こんなカンジ。
設定値の詳細は、下記、参考サイトの1.に書いてあるので、そちらを参考にしました。

【参考サイト】

  1. CYBERAM logrotate
    http://cyberam.dip.jp/linux_foundation/systemlog/logrotate_main.html
    設定値や設定ファイルの内容まで詳しく解説されていました。
  2. 技林
    Webサーバログについて
    http://tech.bayashi.net/svr/doc/apache/apachelog.html
  3. @IT logrotateのテストを行うには
    http://www.atmarkit.co.jp/flinux/rensai/linuxtips/749rotatetest.html


これで、自宅サーバのログローテーションもなんとかできる・・・。(・∀・)v ニヤリ。