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