unix脚本应该在工作日(星期一)和周日(9-14和17-21小时)运行9-21小时。它在oracle中执行一个程序

时间:2015-06-15 11:44:52

标签: bash shell unix ksh

    START_DATE=`date '+%d%m%Y%H%M%S'`
DAYOFWEEK=$(date +"%u")
START_HOUR=$(date +"%H")


run_dt=`date '+%d%m%Y'`
run_hr=`date '+%H%M'`
echo 'run_hr' $run_hr

echo 'Shell script started'
echo ${START_DATE}
echo ${DAYOFWEEK}
echo ${START_HOUR}

while [ $run_hr -lt 21];
do
if [ $DAYOFWEEK = 1 ] || [ $DAYOFWEEK = 2 ] || [ $DAYOFWEEK = 3 ] || [ $DAYOFWEEK = 4 ] || [ $DAYOFWEEK = 5 ] || [ $DAYOFWEEK = 6 ]; then
echo 'inside while'

sqlplus -s xx/abcd<< END2
set timing on; 
select to_char(sysdate,'dd-mm-yyyyhh24:mi') starttime from dual;
#exec my_proc();
select to_char(sysdate,'dd-mm-yyyyhh24:mi') endtime from dual;
END2

sleep 120
let run_hr=`date '+%H%M'`
echo 'run_hr' $run_hr

elif [ $DAYOFWEEK = 7 ]; then
echo 'inside while on sunday'
sqlplus -s xx/abcd<< END2
set timing on; 
select to_char(sysdate,'dd-mm-yyyyhh24:mi') starttime from dual;
#exec my_proc();
select to_char(sysdate,'dd-mm-yyyyhh24:mi') endtime from dual;
END2

sleep 120
if [ $run_hr -eq 14 ]; then
sleep 10800else
let run_hr=`date '+%H%M'`
echo 'run_hr' $run_hr
echo 'Nothing'
fi
else
echo 'off'
fi
done

echo 'Exiting'

通过保持while循环,proc每次都在早上9点由cron启动。但是星期天,我必须在14:00睡觉时保持3小时。 你能告诉我如何让它在周日睡3小时。 感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以尝试创建另一个脚本(如监视器脚本)来执行您发布的脚本: monitor_script:将它放在crontab中并每分钟执行一次 procedure_script:你的脚本

monitor_script的目的是:

  1. 检查您的procedure_script是否已经&#34; up&amp;运行&#34;
  2. 如果出于某种原因将执行procedure_script
  3. 在monitor_script中插入&#34;如果&#34;喜欢: 如果[$ DAYOFWEEK -eq 6]&amp;&amp; [$ yourTimeVar ==&#34; 14&#34; ];然后     睡了3个小时 网络
  4. 此致 ç