[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[fol] Re: rotation of syslog


かわかみです. 

>>>>> In <69u2k8$78q$1 _at_ meshsv17.tk.mesh.ad.jp> 
>>>>>	owl _at_ muc.biglobe.ne.jp (Minoru Saito) wrote:

MS> 野村さんのスクリプト、感動しました。すぐに試し、ログを整理し
MS> やすいように /var/adm/Old.log を設け、

MS> #!/bin/bash
MS> cd /var/adm/Old.log
MS> for i in messages syslog
MS> do
MS>   diff ../${i} ${i}.1 > dif.${i}
MS>   mv ${i}.2 ${i}.3
MS>   mv ${i}.1 ${i}.2
MS>   cat ../${i} > ${i}.1
MS>   :>../${i}
MS> done         


↓うちではこんなの使っています. 
1日1回起動し, /etc/syslog.conf に書かれているログファイルそれぞれにつき
LIM_SIZE とファイルサイズを比較し, それを超えていればディレクトリ
/var/log/.oldlogs の下に移動するというものです. 
(ちゃんとした人が書けばもう少しきれいに書けそうですが...(^^;)
何かの参考になれば幸いです. 

注) sed やってるところの [] の中身はスペースとタブです. 

--------(ここから)--------(ここから)--------(ここから)--------(ここから)--
#!/bin/sh
#
# Roll over the syslogd log files
#

PATH=/bin:/usr/bin

SYSLOGCONF=/etc/syslog.conf
PIDFILE=/var/run/syslogd.pid
OLDDIR=/var/log/.oldlogs
LIM_SIZE=300

main()
{
	echo "Rotating syslog log files:"

	LOGFILES=`sed -n '
	   /^#/d
	   /^$/d
	  s/[^	]*[ 	]*\(\/.*\)/\1/p' < $SYSLOGCONF \
	| sort | uniq | egrep -v '^(/dev/|@)'`

	for FILE in ${LOGFILES}
	{
		if [ -f $FILE ]; then
			eachfile $FILE
		fi
	}

	echo sending SIGHUP to syslogd
	kill -1 `cat $PIDFILE`
}

eachfile()
{
	size=`sum $1 | awk '{print $2}'`
	if [ $size -ge $LIM_SIZE ]; then
		echo "Rotating $1 file."
		roll5 $1
	fi
}

roll()
{
 	if [ -f "$1" ]; then
		mv "$1" "$2"
 	fi
}

roll5()
{
	TAIL=`echo $1 | sed 's/.*\///'`
	OLDLOG="${OLDDIR}/${TAIL}"

	roll "$OLDLOG".4 "$OLDLOG".5
	roll "$OLDLOG".3 "$OLDLOG".4
	roll "$OLDLOG".2 "$OLDLOG".3
	roll "$OLDLOG".1 "$OLDLOG".2
	roll "$1"        "$OLDLOG".1
	cp /dev/null $1
	chmod 644 $1
}

main ${1+"$@"}
exit 0
--------(ここまで)--------(ここまで)--------(ここまで)--------(ここまで)--

-- 
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  川上 浩樹 @機械.工.東京大 <kawakami _at_ sml.t.u-tokyo.ac.jp>
  PGP public key:  http://www.sml.t.u-tokyo.ac.jp/~kawakami/pgp/
  PGP fingerprint: B2 31 69 01 E3 43 AD D0  32 02 9F E9 14 5C 97 AB
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」