上一个定时重启的脚本不太好,重写一个
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