shell 指令碼 序列排程程式

2021-09-11 02:14:29 字數 3110 閱讀 2288

最近做資料倉儲的跑數除錯時,經常涉及大量跑批的操作,利用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...