在开始另一个之前等待bash脚本作业完成

时间:2015-10-21 17:18:40

标签: linux bash queue wait

我觉得这不会像我希望的那样简单......

我理解在bash脚本中使用& 然后等待的概念,但这可以应用于多次运行的同一个脚本,而第一个进程仍然没有& #39; t完成了?

我会试着解释一下我的意思。

说我有这个脚本:

#/!/bin/bash

COMPLETE="download complete"
wget /root/downloads/ http://linktoareallymassivefile.wav &
wait;
echo $COMPLETE

现在忘记运行这个实际脚本只会暂时覆盖以前下载的文件这一事实。

我执行它,它开始下载,然后我再次执行它,但我想在第二个进程开始之前完成第一个进程。

这样的工作会怎么样? :

 #/!/bin/bash

wait;
COMPLETE="download complete"
wget /root/downloads/ http://linktoareallymassivefile.wav &
wait;
echo $COMPLETE &

我非常怀疑它会这样,但我认为你可以看到我在问什么。

或者,我担心,在这种情况下是否需要更复杂的基于队列的解决方案?

2 个答案:

答案 0 :(得分:1)

如果您只是不使用&将流程推送到后台,并删除wait,那么执行wget只会花费很长时间。

答案 1 :(得分:1)

每次运行脚本时,都会启动一个新进程。 每个流程都独立于其他流程。 wait不会影响任何其他脚本。

因此,要么修改脚本以合并所有命令:

wget /root/downloads/ http://linktoareallymassivefile1.wav
wget /root/downloads/ http://linktoareallymassivefile2.wav

或制作一个新脚本来调用原始脚本:

script.py
script.py

如果您不使用&,则在第一个命令完成之前不会执行下一个命令。