linux apache ログローテーション(バーチャルホスト)

Linux

linuxで使えるバーチャルホストでのapache のログローテーション

#! /bin/sh

SHELL=/bin/bash
export SHELL
TERM=vt100
export TERM
JLESSCHARSET=japanese-euc
export JLESSCHARSET
USER=root
export USER
USERNAME=root
export USERNAME
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin
export PATH
PWD=/root
export PWD
LANG=ja_JP.eucJP
export LANG
HOME=/root
export HOME
BASH_ENV=/root/.bashrc
export BASH_ENV
LOGNAME=root
export LOGNAME

TOKYO=/usr/local/apache/logs/oldlog
KANAGAWA=/var/apache/logs-kanagawa/oldlog
CHIBA=/var/apache/logs-chiba/oldlog

ACCESS_LOG=access_log
AGENT_LOG=agent_log
ERROR_LOG=error_log
REFERER_LOG=referer_log
SSL_REQ_LOG=ssl_request_log

for LOGDIR in $TOKYO $KANAGAWA $CHIBA
do if test -d $LOGDIR
then
cd $LOGDIR
if test -s ../$ACCESS_LOG
then
test -f $ACCESS_LOG.1.gz && mv $ACCESS_LOG.1.gz $ACCESS_LOG.2.gz
test -f $ACCESS_LOG.0 && /bin/gzip $ACCESS_LOG.0
test -f $ACCESS_LOG.0.gz && mv $ACCESS_LOG.0.gz $ACCESS_LOG.1.gz
mv ../$ACCESS_LOG $ACCESS_LOG.0

/bin/gzip $ACCESS_LOG.0 &
cp /dev/null ../$ACCESS_LOG
chmod 666 ../$ACCESS_LOG
sleep 10
fi

if test -s ../$AGENT_LOG
then
test -f $AGENT_LOG.1.gz && mv $AGENT_LOG.1.gz $AGENT_LOG.2.gz
test -f $AGENT_LOG.0.gz && mv $AGENT_LOG.0.gz $AGENT_LOG.1.gz
mv ../$AGENT_LOG $AGENT_LOG.0
/bin/gzip $AGENT_LOG.0 &
cp /dev/null ../$AGENT_LOG
chmod 666 ../$AGENT_LOG
sleep 10
fi

if test -s ../$ERROR_LOG
then
test -f $ERROR_LOG.1.gz && mv $ERROR_LOG.1.gz $ERROR_LOG.2.gz
test -f $ERROR_LOG.0 && /bin/gzip $ERROR_LOG.0
test -f $ERROR_LOG.0.gz && mv $ERROR_LOG.0.gz $ERROR_LOG.1.gz
mv ../$ERROR_LOG $ERROR_LOG.0
/bin/gzip $ERROR_LOG.0 &
cp /dev/null ../$ERROR_LOG
chmod 666 ../$ERROR_LOG
sleep 10
fi

if test -s ../$REFERER_LOG
then
test -f $REFERER_LOG.1.gz && mv $REFERER_LOG.1.gz $REFERER_LOG.2.gz
test -f $REFERER_LOG.0.gz && mv $REFERER_LOG.0.gz $REFERER_LOG.1.gz
mv ../$REFERER_LOG $REFERER_LOG.0
/bin/gzip $REFERER_LOG.0 &
cp /dev/null ../$REFERER_LOG
chmod 666 ../$REFERER_LOG
sleep 10
fi

if test -s ../$SSL_REQ_LOG
then
test -f $SSL_REQ_LOG.1.gz && mv $SSL_REQ_LOG.1.gz $SSL_REQ_LOG.2.gz
test -f $SSL_REQ_LOG.0 && /bin/gzip $SSL_REQ_LOG.0
test -f $SSL_REQ_LOG.0.gz && mv $SSL_REQ_LOG.0.gz $SSL_REQ_LOG.1.gz
mv ../$SSL_REQ_LOG $SSL_REQ_LOG.0
/bin/gzip $SSL_REQ_LOG.0 &
cp /dev/null ../$SSL_REQ_LOG
chmod 666 ../$SSL_REQ_LOG
sleep 10
fi

fi
echo "log analyze $LOGDIR finished"
done

sudo systemctl stop apache
sleep 5
sudo systemctl start apache
echo 'log_clean finish'

古いバージョンのlinuxは下記のコマンドでapachをリブート

/usr/local/apache/bin/apachectl stop
sleep 5
/usr/local/apache/bin/apachectl start
echo 'log_clean finish'







コメント

タイトルとURLをコピーしました