0
我有一組6個工作流,它們依賴於每個工作流。第一個工作流程成功完成後,需要同時觸發第二個和第三個工作流程。如果第二個和第三個工作流都成功完成,它必須同時觸發第四個和第五個工作流。當第四個和第五個工作流程成功完成時,必須觸發第六個工作流程。如果任何大小的工作流失敗,腳本必須突然退出而不繼續進行。如何並行運行pmcmd命令並跟蹤其狀態
在此先感謝。
我有一組6個工作流,它們依賴於每個工作流。第一個工作流程成功完成後,需要同時觸發第二個和第三個工作流程。如果第二個和第三個工作流都成功完成,它必須同時觸發第四個和第五個工作流。當第四個和第五個工作流程成功完成時,必須觸發第六個工作流程。如果任何大小的工作流失敗,腳本必須突然退出而不繼續進行。如何並行運行pmcmd命令並跟蹤其狀態
在此先感謝。
你可以用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
我沒有這將是如果它捕獲工作流狀態失敗,失敗或成功。我的代碼需要根據工作流程的返回狀態繼續。 –
如果出現錯誤,它會停止,並且如果工作流程成功,則繼續執行 - 正如您所問。請嘗試!製作6個工作流程,每個工作流程都是一個單獨的''bash'腳本,它說'開始,休眠5秒鐘,退出',並讓其中一個以狀態1退出,當失敗腳本退出時,您將看到上述腳本停止。 –
我可以在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 $?)'而不是回聲。我無法將狀態分配給變量 –