如何并行运行pmcmd命令并跟踪其状态

时间:2016-12-14 10:43:09

标签: unix parallel-processing

我有一套6个工作流程,它们依赖于每个工作流程。第一个工作流成功完成后,需要并行触发第二个和第三个工作流。如果第二个和第三个工作流程都成功完成,则必须并行触发第四个和第五个工作流程。当第四和第五个工作流程成功完成时,必须触发第六个工作流程。如果任何大小的工作流程失败,脚本必须突然退出而不再继续。

提前致谢。

1 个答案:

答案 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