2016-12-14 94 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 $?)'而不是回声。我无法将状态分配给变量 –

相关问题