我有一个更新Web应用程序的脚本。 Web应用程序分布在两台服务器上。这是脚本的纲要
7个步骤中的每个步骤一个接一个地同步完成。总运行时间约为9秒。但是,为减少停机时间,许多步骤可以异步完成。
例如,步骤4和5可以同时完成。我想异步启动第4步和第5步(例如在后台运行),但我找不到如何等到它们都完成后再继续。
答案 0 :(得分:10)
您可能希望使用命令分组来维护需要同步的步骤:
step1
( step2 && step4 && step6 ) &
( step3 && step5 && step7 ) &
wait && echo "all done"
答案 1 :(得分:5)
在脚本的后台启动第4步和第5步(结束&
),然后在运行第6步之前简单地调用wait bash builtin
答案 2 :(得分:3)
您正在寻找wait
命令。
wait: wait [id]
Wait for job completion and return exit status.
Waits for the process identified by ID, which may be a process ID or a
job specification, and reports its termination status. If ID is not
given, waits for all currently active child processes, and the return
status is zero. If ID is a a job specification, waits for all processes
in the job's pipeline.
Exit Status:
Returns the status of ID; fails if ID is invalid or an invalid option is
given.