2016-12-14 120 views
0

我有一組6個工作流,它們依賴於每個工作流。第一個工作流程成功完成後,需要同時觸發第二個和第三個工作流程。如果第二個和第三個工作流都成功完成,它必須同時觸發第四個和第五個工作流。當第四個和第五個工作流程成功完成時,必須觸發第六個工作流程。如果任何大小的工作流失敗,腳本必須突然退出而不繼續進行。如何並行運行pmcmd命令並跟蹤其狀態

在此先感謝。

回答

0

你可以用GNU做到這一點相當簡潔並行

#!/bin/bash 

# Halt on error 
set -e 

################################################################################ 
# Run workflow 1 
################################################################################ 
./workflow1 

################################################################################ 
# Run workflows 2 and 3 in parallel, killing the other if either dies 
################################################################################ 
parallel --halt now,fail=1 ::: ./workflow2 ./workflow3 

################################################################################ 
# Run workflows 4 and 5 in parallel, killing the other if either dies 
################################################################################ 
parallel --halt now,fail=1 ::: ./workflow4 ./workflow5 

################################################################################ 
# Run workflow 6 
################################################################################ 
./workflow6 

,或在不GNU並行

#!/bin/bash 

# Halt on error 
set -e 

################################################################################ 
# Run workflow 1 
################################################################################ 
./workflow1 

################################################################################ 
# Run workflows 2 and 3 in parallel 
################################################################################ 
./workflow2 & 
p2=$! 
./workflow3 & 
p3=$! 
wait $p2 && wait $p3 

################################################################################ 
# Run workflows 4 and 5 in parallel 
################################################################################ 
./workflow4 & 
p4=$! 
./workflow5 & 
p5=$! 
wait $p4 && wait $p5 

################################################################################ 
# Run workflow 6 
################################################################################ 
./workflow6 
+0

我沒有這將是如果它捕獲工作流狀態失敗,失敗或成功。我的代碼需要根據工作流程的返回狀態繼續。 –

+0

如果出現錯誤,它會停止,並且如果工作流程成功,則繼續執行 - 正如您所問。請嘗試!製作6個工作流程,每個工作流程都是一個單獨的''bash'腳本,它說'開始,休眠5秒鐘,退出',並讓其中一個以狀態1退出,當失敗腳本退出時,您將看到上述腳本停止。 –

+0

我可以在ksh中使用相同的腳本嗎?我正在嘗試此代碼並行執行工作流程。 '(pmcmd startworkflow -sv infa951 -d INFA -u P2L_USR -pv P2L_PWD -f LDW -wait wf_DAILY_LOAD; echo $?)&(pmcmd startworkflow -sv infa951 -d INFA -u P2L_USR -pv P2L_PWD -f LDW -wait wf_DAILY_INCR_LOAD; echo $?)'而不是回聲。我無法將狀態分配給變量 –