ちくのう症(蓄膿症)は「菌」が原因!?

FreeBSD上でsyslogのローテーションを設定しています。
ローテーションは毎日午前0時に行い、それが正常に
ログファイルのファイル名を syslog.log.2006-06-11.gz
(つまりsyslog.log.(ログローテーションを実行した前日の日付))
のように運用したいと思っています。
何かアイデアがありましたらお教えください。

今のところ、ローテーションにはnewsyslogを使用しています。
ローテーション自体は問題なく動作していますが、ファイル名の
変更処理がわかりません。
また自分は当該サーバの管理者ですので、やれることに
権限上の制限はありません。

よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

がると申します。


似たような状況でlogをローテートしているbashのバッチファイルを記載してみます。
ちと対象ファイル、ファイル名の命名規則など異なるかと思うので、適宜アレンジしてください。
なにかの参考にでもなれば幸いです。

#!/bin/bash

DATE=`/bin/date +%Y%m%d`_
DIR=/var/log

for file in syslog access_log http_error_log
do
cp $DIR/$file $DIR/bak/$DATE$file
cat /dev/null > $DIR/$file
done
    • good
    • 0
この回答へのお礼

ありがとうございます。教えていただいた内容を基に、以下のスクリプトを書いてみました。これを毎日0:01に走らせることで目的の処理を実現できました。

YESTERDAY=`TZ=JST+15 /bin/date +%Y-%m-%d`
DIR=/var/log
LOGFILE=`find /var/log/syslog.log.0.gz -cmin -3`

if [ $DIR/syslog.log.0.gz = $LOGFILE ] ; then
cp $LOGFILE $DIR/ARCHIVE/syslog.log.$YESTERDAY.gz && \
rm $LOGFILE && \
find $DIR/ARCHIVE -name 'syslog.log.*.gz' -mtime '+94' -exec rm -r {} \;

お礼日時:2006/07/05 08:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング