ログをローテーションさせる。
TurboLinux 7 Server & 8 Serverにて。
cron.daily ー logrotate
↓
/etc/logrotate.confを読み込んで実行するためのシェルスクリプト
/etc/logrotate.conf内での設定項目
- compress
ローテーションされたログをgzipで圧縮
ここが有効でないと、ローテートされるたびに、過去ログはすべて削除されることになる。ここで有効にしておけば、各スクリプト内で指定する必要はなし。 - 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.に書いてあるので、そちらを参考にしました。
【参考サイト】
- CYBERAM logrotate
http://cyberam.dip.jp/linux_foundation/systemlog/logrotate_main.html
設定値や設定ファイルの内容まで詳しく解説されていました。 - 技林
Webサーバログについて
http://tech.bayashi.net/svr/doc/apache/apachelog.html - @IT logrotateのテストを行うには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/749rotatetest.html
これで、自宅サーバのログローテーションもなんとかできる・・・。(・∀・)v ニヤリ。