FC2ブログ


全件表示TopRSSAdmin
ログのローテーションの仕方(log rotation)
2005 / 05 / 31 ( Tue )

ログとかって、ほんま溜まりますよねぇ。
そら溜まりますわなぁ。ログですもんなぁあ。
何で溜まるんでしょうなぁ。
そらログやからですがなぁ。
ほなどうしたらよろしいんでっか?
そらけしていったらいいんちゃいますん?
あっそっかぁ。
ほんだら、どうやってけすんですか?
手で消すんですか?
そんなもんしどいですがなぁ。
そうですなぁ
なんか自動で消してくれませんかなぁ


ということで、要望がありますたので、ログローテーションのシェルスクリプト作成しましたがな。
Solarisには標準であったような気もしないでもない。
まぁ同じように作ればよし。

1.  /usr/lib/newsyslog を以下のように編集

    なかったら作ればよし。(たぶん)

    ※編集する箇所は  LOGDIR  と  LOGNAME の引数
      あとはログの履歴をいくつ残すか。例では0~9の10個を残している。

/usr/lib/newsyslog
-----------------<ここから>---------------------
#!/bin/sh
#
# Copyright (c) 1997-2001 by Sun Microsystems, Inc.
# All rights reserved.
#
#ident  "@(#)newsyslog  1.5     01/11/08 SMI"
#
# NOTE: This script is no longer used -- see logadm(1M)
#
# Running this script checks to see if /var/log/syslog or /var/adm/messages
# need rotating, according to the policies in /etc/logadm.conf.  Since logadm
# normally runs from root's crontab every morning, running this script is no
# longer necessary.
#
####
# ローテーションするログが存在するディレクトリを指定
####
LOGDIR=/var/log

####
# 半角スペースで区切ってログ名を記述
####
LOGNAME="apache2_access_log apache2_error_log"
for LOG in $LOGNAME
do
if test -d $LOGDIR
then
        cd $LOGDIR
        if test -s $LOG
        then
                test -f $LOG.8 && mv $LOG.8  $LOG.9
                test -f $LOG.7 && mv $LOG.7  $LOG.8
                test -f $LOG.6 && mv $LOG.6  $LOG.7
                test -f $LOG.5 && mv $LOG.5  $LOG.6
                test -f $LOG.4 && mv $LOG.4  $LOG.5
                test -f $LOG.3 && mv $LOG.3  $LOG.4
                test -f $LOG.2 && mv $LOG.2  $LOG.3
                test -f $LOG.1 && mv $LOG.1  $LOG.2
                test -f $LOG.0 && mv $LOG.0  $LOG.1
                cp  $LOG    $LOG.0
                cp /dev/null $LOG
                chown apache:other $LOG
                chmod 644    $LOG
                sleep 30
        fi
fi
done
-----------------<ここまで>---------------------


2. 実際に実行してログローテが指定したディレクトリで行われているか確認

  # /usr/lib/newsyslog


3. cronを仕込む

  例)毎週日曜日21時に実行

  # EDITOR=vi;export EDITOR
  # crontab -e

  0 21 * * 0 /usr/lib/newsyslog

以上でつ。



05 : 35 : 58 | トラックバック(0) | コメント(0) | page top↑
| ホーム | 次ページ