自动监控脚本

最近写了一个script,需要具有监控单板是否断电或者重启的功能,通过log的打印实现监控:

#!/bin/sh
alarmrate=28 					# 备份目录的最大容量
file_max_size=2 #1min			# 每个日记的大小限制   1h =160
log_dir=/home/log 				# 日记产出目录
backup_dir=/home/backup 		# 日记备份目录
SLEEPTIME=1

if [ ! -d $log_dir ]
then 
	mkdir $log_dir
fi

if [ ! -d $backup_dir ]
then 
	mkdir $backup_dir
fi

#重命名log
filenameConvert()
{
		timestamp=$(date +%Y%m%d%H%M%S)
		timestamp=`echo $timestamp`
		RETVAL=$1.$timestamp
}

#搜索时间最早的备份log
searchdir()
{
		oldestlog=`ls -rt | head -1 | awk '{print $1}'`
}

#大于alarmrate则删除时间最早的备份log
clear_old_log_under_backup_dir()
{
		cd $backup_dir
		while [ 1 ]
		do
				logsize=`du -ks | awk '{print $1}'`
				if[ $logsize -gt $alarmrate ]
				then
						searchdir
						rm -rf $oldestlog
				else
						break
				fi
		done
}

#log处理过程;大于file_max_size时备份log
log_process()
{
		cd $log_dir
		for i in *
		do
				case $i in
				lyj.log)
						file_size=`du -k $i | awk '{print $1}'`
						if [ $file_size -gt $file_max_size ]
						then
								echo "" > $log_dir/$i
								filenameConvert $i
								cp $log_dir/$i $backup_dir/$RETVAL
								echo "" > $log_dir/$i
						fi
						;;
				*)
						echo "********"
						;;
				esac
		done
}

hello="Test start..."
echo $hello

echo "pls input current time(format:2015-08-07 12:00:01)"
read TIME
if[ "$TIME"="" ]
then 
	echo "skip to set date."
else
	date -s "$TIME"
fi

while [ 1 ]
do
		hello=$(date +"%Y/%m/%s %H:%M:%S,hello.")
		echo $hello
		date +"%Y/%m/%s %H:%M:%S,print hello every 10s." >> $log_dir/lyj.log
		log_process
		clear_old_log_under_backup_dir
		sleep $SLEEPTIME
done



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值