我有一套6个工作流程,它们依赖于每个工作流程。第一个工作流成功完成后,需要并行触发第二个和第三个工作流。如果第二个和第三个工作流程都成功完成,则必须并行触发第四个和第五个工作流程。当第四和第五个工作流程成功完成时,必须触发第六个工作流程。如果任何大小的工作流程失败,脚本必须突然退出而不再继续。
提前致谢。
答案 0 :(得分:0)
您可以使用 GNU Parallel :
非常简洁地完成此操作#!/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 Parallel :
#!/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