在Bash中完成先前作业时执行命令(仅限)

时间:2013-11-27 22:31:05

标签: bash parallel-processing jobs

我正在尝试确保在并行命令终止后串行运行命令。

command1 &
command2 &
command3

在上面的示例中,command1command2同时在后台启动,但很快就会运行command3。我知道这是Bash中的预期行为,但我想知道在command3command1被终止后是否有办法启动command2

可能会这样做:

(command1; touch done1) &
(command2; touch done2) &
while [ ! -f done1 ] && [ ! -f done2 ]; do sleep 1000; done
command3

...但如果有更优雅的解决方案,我会接受它。连接需要是被动的,因为这些命令注定要在PBS队列中使用。有任何想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用不带参数的wait等待所有以前的作业完成:

command1 &
command2 &
wait
command3