最近做資料倉儲的跑數除錯時,經常涉及大量跑批的操作,利用shell寫了乙個序列的排程程式,先說說優點、程式化、方便重跑、支援多個任務、多個日期、非常適合開發階段及資料移植等,而且指令碼開發,立竿見影、方便改造。缺點是不支援並行、並行配置任務依賴性負責,不多說了,上**。
執行任務配置檔案 job.lst
#idm
callsqlldr.sh -t idm_f_com_stf_bcs_tlr -m 1 -d
callsqlldr.sh -t idm_f_agt_dep_acc_his -m 1 -d
callsqlldr.sh -t idm_f_agt_dep_sap_amt -m 1 -d
callsqlldr.sh -t idm_f_agt_dep_ac1 -m 1 -d
callsqlldr.sh -t idm_f_agt_dep_mcn -m 1 -d
callsqlldr.sh -t idm_f_agt_dep_sae -m 1 -d
callsqlldr.sh -t idm_f_agt_dep_sae_amt -m 1 -d
callsqlldr.sh -t idm_f_agt_dep_sap -m 1 -d
callsqlldr.sh -t idm_f_agt_dep_td -m 1 -d
callsqlldr.sh -t idm_f_agt_lns_lns -m 1 -d
callsqlldr.sh -t idm_f_com_stf_emp -m 1 -d
callsqlldr.sh -t idm_f_org_org_bcs -m 1 -d
callsqlldr.sh -t idm_f_evt_dep_txn -m 1 -d
callsqlldr.sh -t idm_f_agt_dep_td_ac1 -m 1 -d
callsqlldr.sh -t idm_f_fin_aca_aca -m 1 -d
##51
callsqlldr.sh -t idm_rep_51_ibps -m 2 -d
callsqlldr.sh -t idm_rep_51_dlcz -m 2 -d
執行日期配置檔案 date.lst
20181208
20181209
20181210
20181211
20181212
20181213
20181214
20181215
20181216
20181217
20181218
20181219
20181220
20181221
20181222
20181223
20181224
20181225
20181226
20181227
20181228
20181229
20181230
呼叫主程式 ./run job.lst date.lst 執行任務
#/bin/sh
if [ $# != 2 ]
then
echo "format: $0 jobfilelst datefilelist!"
exit 1;
fi# 增加當前執行路徑到臨時環境變數、同時生成日誌檔名
export path=$path:`pwd`
filename=`basename $1|awk 'begin'`_`basename $2|awk 'begin'`_`date +%y%m%d%h%m%s`.log
# nohup呼叫主排程程式,同時指定重定向日誌檔案
nohup .main.sh $1 $2 |tee ./log/$ 2>&1 &
#tail -f ./log/$
批量主程式解析 .main.sh
#/usr/bin/ksh
callresult()
# 呼叫主程式
calljobstream()
- $`
echo "------------- cost [ $costtime ] seconds of task [ $line $deald ] -------------"
done
}############## main ###############
if [ $# != 2 ]
then
echo "format: jgmain.sh [job list file] [date list file]!"
exit 1;
fidatelist="$2"
joblist="$1"
cat $datelist | grep -v "^ *#" | sed 's/ //g' | while read line
do if [ "$line" = "" ]
then
continue;
fiecho ">>deal "$joblist $line" data start @`date "+%y/%m/%d %h:%m:%s"`>>"
echo "=step 1: begin custom deal"
callresult $?
echo "=step 2: call job stream"
calljobstream $ $
callresult $?
echo "=step 3: end custom deal"
callresult $?
echo "《服務檢視程式 see
#/bin/sh
ps -ef | head -1
ps -ef | grep .main.sh| grep -v grep
服務強制終止程式 stop
#/bin/sh
pid=`ps -ef | grep .main.sh| grep -v grep |awk ''`
if [ "$pid"x = ""x ]
then
exit 1;
fiecho "kill $pid"
kill -9 $pid
shell指令碼程式
學習shell指令碼是需要經過大量的練習來鞏固語法的 就像我們當初學習c語言是一樣的 下面為自己在用shell編寫的指令碼程式。1.求1.100所有數的總和 程式如下 bin bash i 0sum 0 for i 100 i do let sum i done echo sum最終輸出結果為505...
shell指令碼批量排程Oracle儲存過程
本程式批量排程oracle儲存過程,支援定時排程任務,處理儲存過程排程過程中的依賴關係。1.run prc.sh bin bash author zhangbingkai 2018.10.14 v prc call 1 v date 2 shell dir 3 v oracle home cat s...
Oozie 排程 shell 指令碼提交不到yarn
在oozied web找錯誤 原因是yarn site.xml中的兩處配置值太小了,不滿足作業的申請條件 把yarn site.xml中的兩處配置加大一點 容器記憶體 yarn.nodemanager.resource.memory mb 最大容器記憶體 yarn.scheduler.maximum...