我无法通过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?
答案 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
。