Shell实现了crontab更实用的方法

while [ `ps x |grep -v grep|grep Mycrontab.sh |wc -l` -gt 2 ];

do
   echo "The script Mycrontab.sh is running ....."
   exit
done

function re_initTimes()
{
   HOURT=`date +%H`
   startDay=`date -d "-2 day" +"%Y%m%d"`
   endDay=`date -d "-1 day" +"%Y%m%d"`
   if (( $((10#$HOURT)) < 8 )) ; then
      endDay=`date -d "-2 day" +"%Y%m%d"`
   fi
   echo $HOURT $startDay $endDay
}

HSE=`re_initTimes`
startAndEnd=`echo $HSE |awk '{print $2 }'`_`echo $HSE |awk '{print $3 }'`
r_run_time=1

while true ;do
   HSE=`re_initTimes`
   HOURT=`echo $HSE |awk '{print $1 }'`
   startDay=`echo $HSE |awk '{print $2 }'`
   endDay=`echo $HSE |awk '{print $3 }'`
   startEnd=${startDay}_${endDay}
   echo "===== start days:"$startDay $endDay
   if (! ps -ef | grep share_robot_tianjin.sh | grep -v "grep");then
       if [[ $startAndEnd == $startEnd ]] && [ $r_run_time -le 3 ] ;then
            echo "===== starting share_robot_tianjin.sh,r_run_time: "$r_run_time  
            sh /data01/ss_deploy/workspace/submit/batch1/MyJOBS.sh ${startDay} ${endDay} &
            r_run_time=`expr $r_run_time + 1`
            echo "===== started successfully ===================="
       elif [[ $startAndEnd != $startEnd ]];then
            startAndEnd=$startEnd
            r_run_time=1
       else
            echo "===== already run 3,share_robot_beijing.sh ========="
       fi
   else
        echo "===== Mycrontab.sh is running, sleep 5m again---------"
        #sleep 5m
   fi
 
   sleep  10m
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值