您的位置:首页 > 其它

定时执行脚本2

2016-07-14 15:30 155 查看
上一个定时重启的脚本不太好,重写一个

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: