我正在尝试确保在并行命令终止后串行运行命令。
command1 &
command2 &
command3
在上面的示例中,command1
和command2
同时在后台启动,但很快就会运行command3
。我知道这是Bash中的预期行为,但我想知道在command3
和command1
被终止后是否有办法启动command2
。
可能会这样做:
(command1; touch done1) &
(command2; touch done2) &
while [ ! -f done1 ] && [ ! -f done2 ]; do sleep 1000; done
command3
...但如果有更优雅的解决方案,我会接受它。连接需要是被动的,因为这些命令注定要在PBS队列中使用。有任何想法吗?提前谢谢。
答案 0 :(得分:2)
您可以使用不带参数的wait
等待所有以前的作业完成:
command1 &
command2 &
wait
command3