我觉得这不会像我希望的那样简单......
我理解在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 &
我非常怀疑它会这样,但我认为你可以看到我在问什么。
或者,我担心,在这种情况下是否需要更复杂的基于队列的解决方案?
答案 0 :(得分:1)
如果您只是不使用&
将流程推送到后台,并删除wait
,那么执行wget
只会花费很长时间。
答案 1 :(得分:1)
每次运行脚本时,都会启动一个新进程。
每个流程都独立于其他流程。 wait
不会影响任何其他脚本。
因此,要么修改脚本以合并所有命令:
wget /root/downloads/ http://linktoareallymassivefile1.wav
wget /root/downloads/ http://linktoareallymassivefile2.wav
或制作一个新脚本来调用原始脚本:
script.py
script.py
如果您不使用&
,则在第一个命令完成之前不会执行下一个命令。