最近写了一个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