0

我无法通过 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 吗?

4

2 回答 2

1

在这种情况下不要这样做exec。这将用启动的程序替换当前进程。就像运行它们一样

bash script1.sh &
bash script2.sh &

或者

./script1.sh &
./script2.sh &

wait像devnull所说的那样放在后面。

于 2013-07-15T10:24:06.180 回答
1

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

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

手册

等待

   wait [jobspec or pid ...]

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

于 2013-07-15T07:47:16.367 回答