vine-users ML アーカイブ



[vine-users:062167] Re: logrotate の設定

  • From: KANEKO Seiji <giraffe@xxxxxxxxxxxx>
  • Subject: [vine-users:062167] Re: logrotate の設定
  • Date: Tue, 16 Sep 2003 01:00:22 +0900
金子と申します。

On Tue, 16 Sep 2003 00:02:28 +0900
Koyama <mlac@xxxxxxxxxxxx> wrote:
> logrotate.conf では、logrotated.d フォルダにある syslog 
> などのファイルの /bin/kill -HUP などのコマンドは、毎日実行されて
> いるのでしょうか?
> だとすると、ローテーションも毎日実行されていると考えて良いのでしょうか?
> もしそうであれば、logrotate.conf の weekly はどのような意味を
> 持つのでしょうか?
> また、postrotate コマンドも実行されているのでしょうか?

/etc/cron.daily/logrotate から logrotateが起動されると、

logrotate.conf または、そのファイルでincludeしている /etc/logrotate.d
ディレクトリ下の各設定ファイルで rotation 対象に指定しているファイル
ごとに、stateファイル、すなわち
/var/lib/logrotate.status
に記録している、前回の rotate 処理実行日付を見に行き、そこから、
指定された日数(デフォルトでは logrotate.conf で指定している weekly
つまり1週間)経過していれば、rotate の処理を行う。

という動作をします。

例えば、ワタシの手元にある /var/lib/logrotate.statusファイルには

logrotate state -- version 2
"/var/log/messages" 2003-9-14
"/var/log/secure" 2003-9-14
"/var/log/maillog" 2003-9-14
"/var/log/spooler" 2003-9-14
"/var/log/boot.log" 2003-9-14
"/var/log/cron" 2003-9-14
"/var/log/wtmp" 2003-9-4

と書かれています。設定ファイルによれば、次回の rotate 処理は、
/var/log/wtmp はmonthlyなので10/4以降、その他のファイルはweekly
なので9/21以降、ということになります。

9/20までは、logrotateは毎日呼び出されますが結果としては
 *何もしません* 。

9/21に /etc/cron.daily/logrotate が呼び出されると、messagesから
cronまでの各ファイルがrotateされた後で、 /var/lib/logrotate.status
ファイルに書かれている前回の処理日付が2003-9-21に書き変わります。

というふうに、いずれのファイルも、*期日が来るまでは* rotate 処理を
行いません。 postrotate の処理も実施しません。

なので、

> logrotate スクリプト(/usr/sbin/logrotate /etc/logrotate.conf)
> のコマンド指定をcron.daily ではなく、cron.weekly へ移動しても
> 問題ないものでしょうか?

Vine Linuxの logrotate 周りのデフォルト設定では、weeklyより短い
頻度で rotate させているファイルはないので、 logrotate スクリプト
をcron.weeklyに移してもやることは変わらないはずです。チェックが
毎日から週1回に変わるので、次の回はもしかしたら数日遅れるかも
知れませんが、それ以降はやはり週1回 logrotate するでしょうし、
wtmpは月1回 rotate するでしょう(未確認)。

以下、個人的な意見ですが:

将来、どれかのツールに大量のログを吐き出すような設定変更を加えて、
rotateの間隔を週1回から毎日とかに変更したくなる、あるいは
サイズ制限を加えたくなるかもしれない、という可能性を考えると、
logrotate スクリプトは cron.daily にそのままおいておく方が実用的
かと思います。
logrotate 自体は、毎日実行したところで、大した負荷があるような処理
とは思えませんし…。

# man logrotate すれば、もっと詳しい説明があります。

以上、参考になれば幸いです。

--
金子誠司 (KANEKO Seiji)