无法并行运行多个脚本

时间:2013-07-15 07:37:02

标签: shell unix

我无法通过shell脚本并行执行2个脚本。

我有3个脚本:script1.sh,script2.sh和installpackages.sh。

我的要求是script1.sh和script2.sh必须在后台并行运行,在完成script1.sh和script2.sh之后,应该执行installpackages.sh。

selid1t601.xayybol.74> vi script.sh
exec script1.sh &
exec script2.sh &

installpackages.sh

您能否建议我如何并行执行script1.sh和script2.sh?

2 个答案:

答案 0 :(得分:1)

由于您已经在后台执行脚本,因此这些脚本基本上是并行运行的。您需要的唯一事情是wait以确保在继续执行最后一步之前已执行脚本。你需要说:

exec script1.sh &
exec script2.sh &
wait
installpackages.sh

来自manual

  

等待

   wait [jobspec or pid ...]
     

等到每个进程ID pid 或作业指定的子进程   规范 jobspec 退出并返回最后一个的退出状态   命令等待。如果给出了作业规范,则作业中的所有进程   等待。如果没有给出参数,则所有当前活动的子项   等待进程,返回状态为零。如果没有    jobspec pid 指定shell的活动子进程,即   返回状态为127。

答案 1 :(得分:1)

在这种情况下,

不要exec。这将用已启动的程序替换当前进程。就像

一样运行它们
bash script1.sh &
bash script2.sh &

./script1.sh &
./script2.sh &
正如devnull所说,

并放了一个wait