定时执行脚本2

上一个定时重启的脚本不太好,重写一个

1、首先读取配置文件的信息

2、sleep直到期望的星期

3、sleep直到期望的时间


#!/bin/bash

rebootoperator ()
{
	echo "rebootoperatoring"
	kill -9 $(lsof -i:30000 | sed -n '2p' | awk '{print $2}')
	sleep 5

	killall DecoderProcess
	sleep 5

	killall X
	sleep 5

	killall X
	sleep 5

	kill -9 $(lsof -i:20000 | sed -n '2p' | awk '{print $2}')

	cd /home/nvrapp
	./clear_process.sh
	cd -

	echo "time is up, start reboot, NowDate $NowDate !!!!!!" >> /home/JuntaiNvrLog/jtRebootrecord.log
	
	reboot
	
	exit 0	
}

rebootoperatortest ()
{
	echo "rebootoperatortest^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
}

StartTime=`date +'%Y-%m-%d %H:%M:%S'`
echo "-----------------------New Start Run at $StartTime, version 1.01 ---------------------"

if [ ! -f JtRestartCronTab ]; then
	echo "no JtRestartCronTab file, exit"
	exit 0
fi

OneDaySecond=86400
HalfDaySecond=43200
OneHour=3600

#minute   hour   day   month   week   command

Cmd=`awk 'NR==1 {print $0}' JtRestartCronTab`
Minute=`awk 'NR==1 {print $1}' JtRestartCronTab`
Hour=`awk 'NR==1 {print $2}' JtRestartCronTab`
WeekS=`awk 'NR==1 {print $5}' JtRestartCronTab`
Time=`expr $Hour \* 60 \* 60 + $Minute \* 60`

echo "minute   hour   day   month   week   command"
echo "Minute $Minute, Hour $Hour, Time $Time, WeekS $WeekS, Cmd $Cmd"

if [ "$WeekS" = "*" ]; then
	echo "* mean no week, exit"
	exit 0
fi

echo "we config weeks, killall jtRebootDaemon.sh and use this script to control reboot"
killall jtRebootDaemon.sh
killall jtRebootDaemon.sh

echo "sleep about 23 hours"
#sleep 82800

WeekS=${WeekS//,/ }
echo "week list is $WeekS"

#while((1));do
#{

echo "----------this while go to the expect week"
while((1)); do
{
NowDate=`date +'%Y-%m-%d %H:%M:%S'`
NowHour=`date +%H`
NowMinute=`date +%M`
NowSecond=`date +%S`
NowWeek=`date +%w`
NowTime=`expr $NowHour \* 60 \* 60 + $NowMinute \* 60 + $NowSecond`
echo "NowHour $NowHour, NowMinute $NowMinute, NowWeek $NowWeek, NowTime $NowTime"

#7 is a invalid value
ExpectWeek=7

for Week in $WeekS
do
	if [ $Week -eq $NowWeek ]; then
		echo "Week $Week equal NowWeek $NowWeek, check the time"
		if [ $Time -ge $NowTime ]; then
			ExpectWeek=$Week
			echo "Week $Week equal NowWeek $NowWeek, Need Reboot Time $Time greate NowTime $NowTime, break"
			break
		fi
		echo "Week $Week equal NowWeek $NowWeek, but need reboot Time $Time little or equal NowTime $NowTime, go on to find"
	else
		echo "Week $Week not equal NowWeek $NowWeek, go on to find"
	fi
done

if [ $ExpectWeek -eq 7 ]; then
	SleepTime=`expr 86400 - $NowHour \* 60 \* 60 - $NowMinute \* 60 - $NowSecond`
	if [ $SleepTime -gt 3600 ];then
		SleepTime2c3=`expr $SleepTime \* 2 / 3`
		echo "Not find the ExpectWeek, sleep all the day left $SleepTime second, but sleep $SleepTime2c3"
		sleep $SleepTime2c3
	else
		echo "Not find the ExpectWeek, sleep all the day left $SleepTime second"
		sleep $SleepTime
	fi
else
	echo "we need reboot at week $ExpectWeek, Hour $Hour, Minute $Minute"
	break
fi
}
done


#CanReboot=0

echo "----------this while go to the expect time"
while ((1)); do
{
	NowWeek=`date +%w`
	NowHour=`date +%H`
	NowMinute=`date +%M`
	NowSecond=`date +%S`
	NowTime=`expr $NowHour \* 60 \* 60 + $NowMinute \* 60 + $NowSecond`

	SleepTime=`expr $Time - $NowTime`
	
	if [ $SleepTime -gt 0 ]; then
		#CanReboot=1
		if [ $SleepTime -gt 3600 ]; then
			echo "now week $NowWeek is expect week $ExpectWeek, SleepTime $SleepTime is great than 3600, sleep 3600, now time is $(date +'%Y-%m-%d %H:%M:%S')"
			sleep 3600
			echo "now week $NowWeek is expect week $ExpectWeek, SleepTime $SleepTime is great than 3600, sleep 3600 over, now time is $(date +'%Y-%m-%d %H:%M:%S')"
		else
			echo "now week $NowWeek is expect week $ExpectWeek, SleepTime $SleepTime is little 3600, sleep $SleepTime, now time is $(date +'%Y-%m-%d %H:%M:%S')"
			sleep $SleepTime
			echo "now week $NowWeek is expect week $ExpectWeek, SleepTime $SleepTime is little 3600, sleep $SleepTime over, now time is $(date +'%Y-%m-%d %H:%M:%S')"
		fi
	else
#			if [ $CanReboot -eq 1 ]; then
			echo "now week $NowWeek is expect week $ExpectWeek, SleepTime is $SleepTime, reboot!!!, now time is $(date +'%Y-%m-%d %H:%M:%S')"
			sleep 2
			
#				rebootoperator
#				exit 0
#				CanReboot=0
			break
#			else
#				echo "now week $NowWeek is expect week $ExpectWeek, SleepTime is $SleepTime, reboot!!!, now time is $(date +'%Y-%m-%d %H:%M:%S'), CanReboot is $CanReboot"
#			fi
	fi

}
done

#}
#done


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值