|
|
既知の問題 No. 639 logrotate に失敗する
【現象】
cron から実行される logrotate によるログのローテーションが正常に
行われず、圧縮されたログファイルのサイズが 0 バイトになる。また、
/var/log/messages.1 というファイルが残る。
例:
--------------------------------------------------------------------
# ls -al /var/log/messages*
-rw------- 1 root root 20785 11月 30 12:30 /var/log/messages
-rw------- 1 root root 244584 11月 30 04:02 /var/log/messages.1
-rw-r--r-- 1 root root 0 11月 30 04:02 /var/log/messages.1.gz
-rw-r--r-- 1 root root 0 11月 21 04:02 /var/log/messages.2.gz
-rw-r--r-- 1 root root 0 11月 15 04:02 /var/log/messages.3.gz
#
--------------------------------------------------------------------
【原因】
プログラムのバグ。標準入出力が閉じられた状態で起動された場合、
/usr/sbin/logrotate は gzip を実行する際に行う標準入出力処理の
ハンドリングに問題があるため、処理が正常に行われない。
通常、logrotate は /etc/cron.daily/logrotate の設定ファイルより
cron によって起動されるが、この際標準入出力が閉じられた状態で実行
されるため、処理に失敗する。
【解決方法】
アップデートパッケージが提供されるまで、以下のワークアラウンドで
対処して下さい。
・cron からの logrotate の起動時にダミーの標準入出力を開いて起動させる。
具体的手順は以下の通りです。
1. /etc/cron.daily/logrotate ファイルをエディタで開き、起動処理を
行っている行(3行目)を次のように修正します。
[/etc/cron.daily/logrotate]
--------------------------------------------------------------------
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
--------------------------------------------------------------------
修正前:
--------------------------------------------------------------------
/usr/sbin/logrotate /etc/logrotate.conf
--------------------------------------------------------------------
修正後:
--------------------------------------------------------------------
/usr/sbin/logrotate /etc/logrotate.conf < /dev/zero > /dev/null 2>&1
--------------------------------------------------------------------
2. 設定ファイルを変更したら、以下のコマンドを実行して crond を再起動します。
# /etc/init.d/crond restart
以上の処理を行った状態で、その後ローテーションが正常に行われることを確認
して下さい。
daemon logrotate cron service 関連文書 対象製品
Last modified : Fri Dec 10 JST 2004 # 1
|
Copyright © Turbolinux, Inc..All Right Reserved.

