[Index]

ログをまわす(CRON)


Apacheの導入

お約束のApacheは1.3.12が最新バージョンなので、それを導入します。具体的な導入手順はココと同様です。

また、Apache 2.x系については、FreeBSDベースでココに記録してますのでご参照ください。

今回は、Apacheのログローテーションの自動化をVAIOでも実装することにします。

ユーザ変数遊び

さて、自動化といえばスクリプトですが、システムと親しくなるために、ちょっとシェルで遊んでみましょう。
$ echo $D

$
$ D=date
$ echo D
D
$ echo $D
date
$ D=`date`
$ echo $D
Tue May 23 20:57:00 JST 2000
$ D=`date +%Y%m%d`
$ echo $D
20000523
$
上記のコマンドを入力してみることで、ログローテーションに必要なシェルスクリプトの記述方法が理解できるでしょう。

これまでWinしか知らないというユーザが注意すべき点は、シングルクオートとバッククオートの違いです。

ログローテーションスクリプト

さて、シェルで遊んだらそこで学んだことを役立てましょう。(ヨクマナビ、ヨクアソベ...)

Apacheのログをローテーションさせるスクリプトは、次のように記述できます。

#!/bin/sh
# alr.sh - apache log rotate
# Yoshio Shimamura

LOGDIR='/usr/local/apache/logs'
BINDIR='/usr/local/apache/bin'
D=`date +%Y%m%d`

mv $LOGDIR/access_log $LOGDIR/access_log.$D
mv $LOGDIR/error_log $LOGDIR/error_log.$D
$BINDIR/apachectl restart
スクリプトを作成したら、忘れず実行可能フラグを立てよう。
$ chmod +x ./alr.sh

cronに登録

Apacheのログなので、suしてcronに登録します。

登録は、crontabコマンドに-eオプションを与えて実行するとエディタが起動しますので、そこに実行日時の設定と、実行コマンドを記述して行います。

$ su
# crontab -e
毎月1日の2時30分に実行する場合は、次のようなります。
SHELL=/bin/sh
30 2 1 * * root /home/purupuru/bin/alr.sh
cron自体のログは、通常/var/log/cronに記録されます。
[TOP]