2013-04-29 3 views
0

셸 스크립팅과 UNIX에서 비교적 새로운 기능입니다. 솔라리스 상자를 사용하고 있는데 문제는 입니다. strtwrfl.sh이라는 쉘 스크립트가 있습니다.이 스크립트는 매개 변수를 워크 플로 이름으로 사용하고 워크 플로를 시작합니다. ./strtwrfl.sh ABC 여기서 ABC은 워크 플로 이름입니다. 이 워크 플로우 ABCBCD, strtwrfl.sh BCDstrtwrfl.sh ABC이 성공적으로 실행하는 경우에만 성공할 수가있는 경우 I는 워크 플로우 (200)를 통해 실행해야여러 개의 informatica 작업 흐름을 실행하는 셸 스크립트

각 워크 플로는 이전의 작업 흐름, 즉의 성공적인 완료에 따라 달라집니다.

각 워크 플로가 성공적으로 실행되는 데 다른 시간이 걸립니다.

200 개 이상의 informatica 워크 플로우가 하나씩 (스크립트에 수동으로 해당 워크 플로우를 입력하는 것을 염두에 두지 않아야 함) 하나씩 실행해야하고 하나가 실패하면 스크립트는 어떤 워크 플로우가 실패했는지 표시하지 않도록해야합니다.

프로덕션 환경이므로 여기서는 strtwrfl.sh을 공유 할 수 없습니다.

답변

0

야해이 하나의 행 .. 하나씩에서 이러한 각 항목을 입력합니다 ... 정말 간단 ..

./strtwrfl.sh ABC ./strtwrfl.sh ABC1 ./strtwrfl.sh ABC2 .. .. .. 등등

와 .. 골자 것

..

그런 다음 생을 즉석에서 할 수 있습니다 오류 처리를 넣어서.

또는 다른 것을 달성하고 싶습니까? 나는 질문 설명에서 붙잡을 수 없습니까?

2

나는 당신의 질문을 정확하게 이해할 수 없다. 그러나 실행을 실패하면 다른 매개 변수가있는 행에서 스크립트를 여러 번 호출하고 죽기를 원한다면 다음과 같이 할 수있다 :

meta_strtwrfl.sh :

#!/bin/sh 

script="./strtwrt.sh" 
workflows=" 
     ABC 
     BCD 
     CDE 
" 

for workflow in ${workflows}; do 
     "${script}" "${workflow}" || { echo "$0: workflow '${workflow}' failed!"; exit 1; } 
done 
echo "$0: all workflows finished successfully!" 

변경 script="./strtwrt.sh"strtwrt.sh 스크립트에 경로를 반영하고 그에 따라 workflows을 변경합니다. 솔라리스 시스템에 어떤 표준 셸이 있는지 모르기 때문에 workflow 변수에 배열을 사용하지 않습니다. 즉, 워크 플로 이름에 공백을 사용할 수 없습니다.

예를 실행 : 실행

$ ./meta_strtwrfl.sh 
./meta_strtwrfl.sh: all workflows finished successfully! 

$ ./meta_strtwrfl.sh 
./meta_strtwrfl.sh: workflow 'ABC' failed! 
+0

안녕 친구가 잘 작동 할 수 ...이 코드는 솔기 감사하지만, 워크 플로의 모든 작업 때까지 기다리지 않습니다 .. 내가 비슷한 시도했다. 내 문제를 해결하는 runmaps.sh 인 informatica 디렉토리 자체에서 또 다른 흥미로운 스크립트를 발견했습니다. 모든 워크 플로우를 나열하는 매개 변수로 .dat 파일을 사용합니다. –

+0

워크 플로의 모든 작업이 실행될 때까지 기다리지 않겠다는 의미가 무엇인지 알지 못합니다. 워크 플로 스크립트가 순차적으로 시작됩니다. 그러나 문제에 대한 (다른) 해결책이있는 경우 자신의 답을 추가하고 수락 할 수 있으므로이 질문은 대답하지 않은 상태로 떠 다니지 않습니다. –

-1
<<'notrequired'    
      wfrunid=`pmcmd getworkflowdetails -sv ${INTEG_SERVICE} -d ${DOMAIN} -u ${USER_NAME} -p ${PASSWORD} -usd ${USD} -f ${folder_name} -rin ${RUN_INSTANCE} ${workflow_name} | grep "Workflow run id" | awk -F"[" '{print $2}' | awk -F"]" '{print $1}'` 
         cur_wf_status=`pmcmd getworkflowdetails -sv ${INTEG_SERVICE} -d ${DOMAIN} -u ${USER_NAME} -p ${PASSWORD} -usd ${USD} -f ${folder_name} -rin ${RUN_INSTANCE} ${workflow_name} | grep "Workflow run status" | awk -F"[" '{print $2}' | awk -F"]" '{print $1}'` 

         if [ "${cur_wf_status}" == "Suspended" ] 
          then 
           echo "Workflow $workflow_name Status :${cur_wf_status}" 
           echo "Workflow $workflow_name Runid :${wfrunid}" 
           echo "            " 
           echo "######################################## Running workflow in Re-START mode start ################################" 
           echo "#################################################################################################################" 
           echo "#################################################################################################################" 


           pmcmd recoverworkflow -sv ${INTEG_SERVICE} -d ${DOMAIN} -u ${USER_NAME} -p ${PASSWORD} -usd ${USD} -f ${folder_name} -paramfile ${param_file} -rin ${RUN_INSTANCE} -wfrunid ${wfrunid} ${workflow_name} 

           if [ $? -ne 0 ] 
            then 
              echo "################################################# END OF LOG ####################################################" 
              exit 1 
           fi           
           while (true) 
            do 
             rec_wf_status=`pmcmd getworkflowdetails -sv ${INTEG_SERVICE} -d ${DOMAIN} -u ${USER_NAME} -p ${PASSWORD} -usd ${USD} -f ${folder_name} -rin ${RUN_INSTANCE} ${workflow_name} | grep "Workflow run status" | awk -F"[" '{print $2}' | awk -F"]" '{print $1}'` 

             rec_wf_log_name=`pmcmd getworkflowdetails -sv ${INTEG_SERVICE} -d ${DOMAIN} -u ${USER_NAME} -p ${PASSWORD} -usd ${USD} -f ${folder_name} -rin ${RUN_INSTANCE} ${workflow_name} | grep "Workflow log file" | awk -F"[" '{print $2}' | awk -F"]" '{print $1}'` 

             case "${rec_wf_status}" in 
             ("Suspended"|"Failed"|"Aborted"|"Stopped") sleep 10 

             rec_wf_error_start=`pmcmd getworkflowdetails -sv ${INTEG_SERVICE} -d ${DOMAIN} -u ${USER_NAME} -p ${PASSWORD} -usd ${USD} -f ${folder_name} -rin ${RUN_INSTANCE} ${workflow_name} | sed -n '/Workflow run error message: /=' | sed -n '$p' 2> /dev/null` 

             rec_w_error_end=`pmcmd getworkflowdetails -sv ${INTEG_SERVICE} -d ${DOMAIN} -usd ${USD} -u ${USER_NAME} -p ${PASSWORD} -f ${folder_name} -rin ${RUN_INSTANCE} ${workflow_name} | sed -n '/Start time: /=' | sed -n '$p' 2> /dev/null` 

             rec_wf_error_end=`expr $rec_w_error_end - 1 2>/dev/null` 

             rec_wf_error=`pmcmd getworkflowdetails -sv ${INTEG_SERVICE} -d ${DOMAIN} -usd ${USD} -u ${USER_NAME} -p ${PASSWORD} -f ${folder_name} -rin ${RUN_INSTANCE} ${workflow_name} | sed -n "$rec_wf_error_start,$rec_wf_error_end p" 2> /dev/null` 





         rec_task_name=`echo ${wf_error} | sed 's/\(^.*task instance\)\(.*\)\(].*$\)/\2/' | awk -F"[" '{print $2}' | awk -F"]" '{print $1}'` 

             rec_task_type=`pmcmd gettaskdetails -sv ${INTEG_SERVICE} -d ${DOMAIN} -u ${USER_NAME} -p ${PASSWORD} -usd ${USD} -f ${folder_name} -rin ${RUN_INSTANCE} -w ${workflow_name} ${rec_task_name} | grep "Task type:" | awk -F"[" '{print $2}' | awk -F"]" '{print $1}'` 

             rec_task_error_start=`pmcmd gettaskdetails -sv ${INTEG_SERVICE} -d ${DOMAIN} -usd ${USD} -u ${USER_NAME} -p ${PASSWORD} -f ${folder_name} -rin ${RUN_INSTANCE} -w ${workflow_name} ${rec_task_name} | sed -n '/Task run error message: /=' | sed -n '$p' 2>/dev/null` 

             rec_error_end=`pmcmd gettaskdetails -sv ${INTEG_SERVICE} -d ${DOMAIN} -usd ${USD} -u ${USER_NAME} -p ${PASSWORD} -f ${folder_name} -rin ${RUN_INSTANCE} -w ${workflow_name} ${rec_task_name} | sed -n '/Integration Service: /=' | sed -n '$p' 2>/dev/null` 

             rec_task_error_end=`expr $rec_error_end - 1 2> /dev/null` 

             rec_task_error=`pmcmd gettaskdetails -sv ${INTEG_SERVICE} -d ${DOMAIN} -usd ${USD} -u ${USER_NAME} -p ${PASSWORD} -f ${folder_name} -rin ${RUN_INSTANCE} -w ${workflow_name} ${rec_task_name} | sed -n "${rec_task_error_start},${rec_task_error_end} p" 2> /dev/null` 

             print_error=`echo "Task ${rec_task_name} Failed"` 

             case "${rec_task_type}" in 
              ("Session") print_error=`echo "${rec_task_name} ${rec_task_error}"` 
              esac 
             esac 

             case "$rec_wf_status" in 
             "Suspended") echo "      " 
               echo "Workflow Status : ${rec_wf_status}" 
               echo "      " 
               echo "################################################ WORKFLOW ERROR #################################################" 
               echo "      " 
               echo "WORKFLOW ${rec_wf_error}" 
               echo "      " 
               echo "################################################# TASK ERROR ####################################################" 
               echo "      " 
               echo "Task Type: ${rec_task_type}" 
               echo "      " 
               echo "${print_error}" 
               echo "      " 
               execution_stop_time=`date "+%d-%m-%Y-%T"` 
               echo "Execution Stop Time : $execution_stop_time" 
               echo "      " 
               echo "################################################# END OF LOG ####################################################" 
               exit 1 
               ;; 
             "Succeeded") echo "      " 
               echo "Workflow Status : ${rec_wf_status}" 
               echo "      " 
               echo "Workflow Run Successfully Completed" 
               echo "      " 
               execution_stop_time=`date "+%d-%m-%Y-%T"` 
               echo "Execution Stop Time : $execution_stop_time" 
               echo "      " 
               echo "################################################# END OF LOG ####################################################" 
               exit 0 
               ;; 
             "Aborted") echo "      " 
               echo "Workflow Status : ${rec_wf_status}" 
               echo "      " 
               echo "################################################ WORKFLOW ERROR #################################################" 
               echo "      " 
               echo "WORKFLOW ${rec_wf_error}" 
               echo "      " 
               echo "################################################# TASK ERROR ####################################################" 
               echo "Task Type: ${rec_task_type}" 
               echo "      " 
               echo "      " 
               echo "${print_error}" 
               echo "      " 
               execution_stop_time=`date "+%d-%m-%Y-%T"` 
               echo "Execution Stop Time : $execution_stop_time" 
               echo "      " 
               echo "################################################# END OF LOG ####################################################" 
               exit 1 
               ;; 
             "Failed") echo "      " 
               echo "Workflow Status : ${rec_wf_status}" 
               echo "      " 
               echo "################################################ WORKFLOW ERROR #################################################" 
               echo "      " 
               echo "WORKFLOW ${rec_wf_error}" 
               echo "      " 
               echo "################################################# TASK ERROR ####################################################" 
               echo "Task Type: ${rec_task_type}" 
               echo "      " 
               echo "      " 
               echo "${print_error}" 
               echo "      " 
               execution_stop_time=`date "+%d-%m-%Y-%T"` 
               echo "Execution Stop Time : $execution_stop_time" 
               echo "      " 
               echo "################################################# END OF LOG ####################################################" 
               exit 1 
               ;; 
             "Stopped") echo "      " 
               echo "Workflow Status : ${rec_wf_status}" 
               echo "      " 
               echo "################################################ WORKFLOW ERROR #################################################" 
               echo "      " 
               echo "WORKFLOW ${rec_wf_error}" 
               echo "      " 
               echo "################################################# TASK ERROR ####################################################" 
               echo "Task Type: ${rec_task_type}" 
               echo "      " 
               echo "      " 
               echo "${print_error}" 
               echo "      " 
               execution_stop_time=`date "+%d-%m-%Y-%T"` 
               echo "Execution Stop Time : $execution_stop_time" 
               echo "      " 
               echo "################################################# END OF LOG ####################################################" 
               exit 1 
               ;;   
             esac 

            done  

         else 
notrequired 
+0

자세한 내용은 [편집]하십시오. 코드 전용 및 "시도하십시오"답변은 검색 가능한 콘텐츠가 없으므로 권장하지 않으며 누군가가 "시도해"야하는 이유를 설명하지 않습니다. 우리는 여기서 지식을위한 자원이되기 위해 노력합니다. –