很多时候任务要在调度平台上定时执行
而你的任务很多是要靠shell脚本来实现启动
在此整理了一下日任务和小时任务的shell脚本带反刷数据功能的 模板
希望能帮到大家
日任务+反刷日任务
# !/bin/bash
# XX数据XXXX每日任务脚本
# 创建时间:2020年5月29日15:05:44
# 创建人:鹜 骜
# shell脚本输入参数:
# $1 开始时间 格式 yyyyMMdd
# $2 结束时间 格式 yyyyMMdd
# 这里解释一下$3 调度平台有的执行任务会加日志级别等别的参数在后面即是$3
if [ "$3" != "" ] || [ "$1" = "" ]; then
echo '=================开始执XXXX脚本================='
# 具体执行步骤(这里写自己步骤啊!)
#如果开始日期小于等于结束日期,则执行数据补刷脚本
elif [ $1 -le $2 ]; then
#获取当前日期及时间
current_date=`date +%Y%m%d`
#判断结束日期是否小于等于当前日期
if [ $2 -le $current_date ]; then
#获取输入的开始时间及结束时间参数
#开始时间
startTime=`date "+%Y%m%d" -d "$1"`
#结束时间
endTime=`date "+%Y%m%d" -d "$2"`
#如果开始时间小于等于结束时间,开始循环执行脚本
while [ `date -d "$startTime" +%s` -le `date -d "$endTime" +%s` ]
do
echo '=================开始执行XXXX反刷脚本================='' 目前反刷时间:'$startTime
# 具体执行步骤 (这里写自己步骤啊!)
if [ `date -d "$startTime" +%s` -gt `date -d "$endTime" +%s` ]; then
break;
fi
#获取下一个日时间
startTime=`date -d "-1 day ago ${startTime}" "+%Y%m%d" `
done
#结束日期不能大于当前日期异常提示
else
echo '结束日期不能大于当前日期!'
fi
#开始日期不能大于结束日期异常提示!
else
echo '开始日期不能大于结束日期!'
fi
正常执行:
带开始时间 结束时间的反刷数据执行:
小时任务+反刷小时任务
# !/bin/bash
# XX数据XXXX每日任务脚本
# 创建时间:2020年5月29日15:05:44
# 创建人:鹜 骜
# shell脚本输入参数:
# $1 开始时间 格式 yyyyMMdd
# $2 结束时间 格式 yyyyMMdd
if [ "$3" != "" ] || [ "$1" = "" ]; then
echo '=================开始执XXXX脚本================='
# 具体执行步骤 (这里写自己步骤啊!)
#如果开始日期小于等于结束日期,则执行数据补刷脚本
elif [ $1 -le $2 ]; then
#获取当前日期及时间
current_date=`date +%Y%m%d`
#判断结束日期是否小于等于当前日期
if [ $2 -le $current_date ]; then
#获取输入的开始时间及结束时间参数
#开始时间
startTime=`date "+%Y%m%d" -d "$1"`
#结束时间
endTime=`date "+%Y%m%d" -d "$2"`
#如果开始时间小于等于结束时间,开始循环执行脚本
while [ `date -d "$startTime" +%s` -le `date -d "$endTime" +%s` ]
do
echo '=================开始执行XXXX反刷脚本================='' 目前反刷时间:'$startTime
for (( i=0; i<24 ; i=i+1 ))
do
echo '================== "`date -d "$startTime" +%Y%m%d`" day "$i" HH =================='
# 具体执行步骤 (这里写自己步骤啊!)
done
if [ `date -d "$startTime" +%s` -gt `date -d "$endTime" +%s` ]; then
break;
fi
#获取下一个日时间
startTime=`date -d "-1 day ago ${startTime}" "+%Y%m%d" `
done
#结束日期不能大于当前日期异常提示
else
echo '结束日期不能大于当前日期!'
fi
#开始日期不能大于结束日期异常提示!
else
echo '开始日期不能大于结束日期!'
fi
实例
【kettle】
shell脚本开头定义出kettle的路径和job存放的路径:
kettlePath='/opt/pdi5.4'
jobPath='/data/etl/job'
具体执行就可以写:
$kettlePath/kitchen.sh -file $jobPath/jobDemo.kjb
最后在调度平台配置shell脚本的目录与名称,设置时间什么的 拖拖拽拽点点就好。
最后
整体来说并不难,能看得懂,但是自己写就是另一回事了
这些东西建议整理成模板,使用的时候拿出来一套,效率定是事半功倍