我试图确保在并行命令终止后串行运行命令。
command1 &
command2 &
command3
在上面的示例中,command1
和 command2
在后台同时启动,但 command3
很快就运行。我知道这是 Bash 中的预期行为,但我想知道是否有办法在 command1
和 command2
终止后启动 command3
.
可能可以这样做:
(command1; touch done1) &
(command2; touch done2) &
while [ ! -f done1 ] && [ ! -f done2 ]; do sleep 1000; done
command3
...但是如果有更优雅的解决方案可用,我会接受。加入需要是被动的,因为这些命令注定要在 PBS 队列中使用。有任何想法吗?提前致谢。
最佳答案
您可以使用不带参数的 wait
来等待所有先前的作业完成:
command1 &
command2 &
wait
command3
关于bash - (仅)当之前的作业在 Bash 中完成时才执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20254328/