datastage tips 二:使用crontab+shell定時調度datastage job

來源:互聯網
上載者:User

  在使用datastage抽取資料的過程中,經常會遇到要求以准即時(如每隔3分鐘同步一次資料)進行資料幫浦的需求。這些要求可以使用crontab+shell來實現。如所示,此為整個shell調度DS JOB的流程:首先使用dsjob的jobinfo參數擷取該JOB的進程號(process_id)和狀態值(state).當state異常時,重設該JOB;當state正常時,判斷該job是否在運行(即process_id是否為0)。若process_id=0,表示目前該JOB未運行,正常調度該JOB,若process_id>0,表示該JOB正在運行階段,轉置結束處。

代碼如下:

#!/bin/sh. /home/dsadm/.bash_profileAPT_CONFIG_FILE=/opt/IBM/InformationServer/Server/Configurations/default.aptPROJECT_NAME=$1JOB_NAME=$2#job stat flagstatus=1job_process_id=1cd $DSHOME/bin#check job status  job_process_id=`./dsjob -jobinfo "$PROJECT_NAME" "$JOB_NAME"|sed -n '10,1p'|sed 's/\(.*\)\([:]\)\([ ]\{1,\}\)\([0-9]\{1,\}\)/\4/g'`  ./dsjob -jobinfo $PROJECT_NAME $JOB_NAME  echo "job_process_id=dsjob -jobinfo $PROJECT_NAME $JOB_NAME"  status=`./dsjob -jobinfo $PROJECT_NAME $JOB_NAME|sed -n '1,1p'|sed 's/\(.*\)\([:]\)\([ ]\{1,\}\)\(.*\)/\4/g'|grep FAILED|wc -l`  echo "status=dsjob -jobinfo $PROJECT_NAME $JOB_NAME"if [ $status -ne 0 ]; then   ./dsjob -run -mode RESET $PROJECT_NAME $JOB_NAME   echo "Invoke: dsjob -run -mode RESET $PROJECT_NAME $JOB_NAME" else  if [ "$job_process_id" -eq 0 ]; then        ./dsjob -run -param \$APT_CONFIG_FILE="$APT_CONFIG_FILE" $PROJECT_NAME $JOB_NAME  fifiecho "Finished"

然後,通過crontab進行上述指令碼的調度,即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.