shell 脚本,实现按小时提交任务,并不影响正在例行的任务,加企业微信报警

#!/bin/bash
# 检查是否有每日例行任务
function wait_job_done(){
    pid=`ps -ef|grep job_name |grep -v grep |awk '{print $2}'|wc -l`
    until [[ $pid -eq 0 ]];do
        this_date=`date +"%y-%m-%d %H:%M:%S"`
        echo "job is runing:"$this_date
        pid=`ps -ef|grep job_name|grep -v grep |awk '{print $2}'|wc -l`
        sleep 30
    done
}
# 几个不同时间格式化
# date -d @1584413171 +"%Y-%m-%d %H:00:00" 
# this_hour=`date +"%y-%m-%d %H:00:00"`
# last_hour=`date +"%y-%m-%d %H:00:00" -d "-1hours"` minutes seconds days months years
# 传入不同时间间隔的时间戳  $1 为不同小时,比如1 小时
function git_diff_hours_timestamp(){
    for i in {10..1032..1};do
        j=$(($i+1))
        h1=$((1584413171-3600*$i*$1))
        h2=$((1584413171-3600*$j*$1))
        echo $h2","$h1
    done
}

# 提交 spark 任务 ,其中时间格式要用加上双引号
function run_job(){
    job_name=`date -d @$3 +"%Y-%m-%d->%H"`
    st_time=`date +%s`
    spark-submit --class com.upneo.Update  \
    --master yarn \
    --name "update_ak"$job_name \
    --executor-memory 4g \
    --num-executors 5  \
    --executor-cores 1 \
    --jars target/update-1.0-SNAPSHOT.jar target/update-1.0-SNAPSHOT-jar-with-dependencies.jar  "$1" "$2" 100
    wait
    end_time=`date +%s`
    use_time=`echo "scale=2;("$end_time-$st_time")/60"|bc`
    curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=0' \
    -H 'Content-Type: application/json' \
    -d '{"msgtype": "text","text": {"content": "'before_neo4j":"$job_name"点,更新完毕,用时:"$use_time"分钟"'"}}'

}


for i in `cat date_job.txt`;do
    # 按照符号切割
    arr=(${i//,/ })
    st_time=`date -d @${arr[0]} +"%Y-%m-%d %H:00:00"`
    ed_time=`date -d @${arr[1]} +"%Y-%m-%d %H:00:00"`
    # 检查是否有正在运行的任务
    wait_job_done
    echo $st_time"========="$ed_time
    run_job "$st_time" "$ed_time" "${arr[1]}"
done

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值