datastage有他自己的排程,不過個人總覺得修改起來不怎麼方便。於是偏向於在linux下用shell排程。最近專案需要,總結了一些,備忘。有什麼不對的地方,歡迎指正。
command syntax:
dsjob [-authfile | -file | -domain -user -password -server ] | -domain [-user ] -server
valid primary command options are:
-run
-stop
-lprojects
-ljobs
-linvocations
-lstages
-llinks
-projectinfo
-jobinfo
-stageinfo
-linkinfo
-lparams
-paraminfo
-log
-logsum
-logdetail
-lognewest
-report
-jobid
-import
status code = -9999 dsje_dsjob_error
dsjob所在的目錄為(據實況而定):/mistel/ibm/informationserver/server/dsengine/bin/dsjob
2.1 執行job
執行job,並把日誌寫在/ds/dslogs/目錄下,每天乙個新的檔案。
dsjob -run -mode normal -jobstatus dstage1 dd_test >> /ds/dslogs/job_run_` date +%y%m%d`.log
2.2 重置job
當job的狀態為「為編譯」,「終止」等時,需要重新編譯才可以執行。
dsjob -run -mode reset -wait dstage1 dd_test >> /ds/dslogs/job_init_` date +%y%m%d`.log
更多例子(dstage1專案下的 dd_test job):
dsjob -run -mode normal -jobstatus dstage1 dd_test >> /ds/dslogs/job_run_` date +%y%m%d`.log
dsjob -report dstage1 dd_test >> /ds/dslogs/job_run_` date +%y%m%d`.log
3.1 dsjob:command not found
執行指令碼時,可能出現dsjob命令未找到的錯誤提示,解決辦法有幾種。
3.1.1 解決一
即每次呼叫dsjob命令前,都把dsenv中的變數讀取一次。命令如下:
source /mistel/ibm/informationserver/server/dsengine/dsenv
3.1.2 解決二
讓linux每次登入時自動執行3.1.1中提到的指令碼。即在/etc/profile.d/custom.sh中新增這段指令碼。
3.2 較完整的指令碼
/test/runjob.sh
#!/bin/bash
# runjob.sh 2012-08-19
# run a job with parameters
# if the number of input parameters is less than 2,then output the help document and exit
if [ $# -lt 2 ] ; then
cat << help
runjob --run a job uasge: runjob projectname jobname jobparameters
example: runjob dsstage1 dd_test -param startdt=20120819 -param enddt=20120819
help
exit 0
fiprojectname="$1"
jobname="$2"
jobparameters="$3"
#echo $projectname
#echo $jobname
#echo $jobparameters
logdir=/ds/dslogs #directory to store logs
workdate=`date +%y%m%d`
#logdir processing.if log folder not exists,create folder.
if [ -d $logdir ]; then
echo "$logdir is exist,continue..."
else
echo "$logdir is not exist,creating $logdir..."
mkdir -p $logdir
fi#job state processing.if job state is not finished ok,then reset the job
jobsta=$($dshome/bin/dsjob -jobinfo $projectname $jobname 2>&1 | awk -f: '/^job status/')
echo $jobsta
if [ "$jobsta" == " run failed (3)" -o "$jobsta" == " stopped (97)" ];then
echo "reset before run job $jobname"
$dshome/bin/dsjob -run -mode reset $projectname $jobname >>$/job_init_` date +%y%m%d`.log
sleep 5
fi#run a job
dsjob -run -mode normal $jobparameters -jobstatus $projectname $jobname >> /ds/dslogs/job_run_` date +%y%m%d`.log
DS 順序表的相關操作
所以順序表分為 靜態順序表和動態順序表 首先我們先來看看兩種順序表的結構 define max size 10 typedef int datatype int的別名,如此定義方便後期資料型別修改 初始化 void seqlistinit seqlist ps,int capacity 銷毀 voi...
生產排程相關知識(二)
有限產能排程延伸 最初的有限產能僅能受機台的制約。隨著時間的推移,有限產能已經發展成為功能更全面的。例如,在車間作業排程環境中,往往有比人更多的機器。有時多個操作都需要用同一臺機器,但有時,多個操作也可在其他可同時執行多個不同的機器上進行,但沒有足夠的人力。在這些環境中,機器的制約和勞動約束需要通過...
Linux IO排程器相關演算法介紹
io排程器 io scheduler 是作業系統用來決定塊裝置上io操作提交順序的方法。存在的目的有兩個,一是提高io吞吐量,二是降低io響應時間。然而io吞吐量和io響應時間往往是矛盾的,為了盡量平衡這兩者,io排程器提供了多種排程演算法來適應不同的io請求場景。其中,對資料庫這種隨機讀寫的場景最...