在初始化/ bash脚本中同时执行多个程序

时间:2009-01-09 23:52:02

标签: linux bash scripting rcs

您好我正在使用一个使用rcS脚本启动的模拟器,这是我的脚本

cd /tests
./test1 &
./test2 &
./test3 &
./test4 
exit

我想要的是同时运行所有测试,并且只有在完成所有先前的测试后才执行exit命令。而且不仅在测试4完成时,这可能吗? 谢谢。

3 个答案:

答案 0 :(得分:8)

您可以使用wait:

./test1 &
./test2 &
./test3 &
./test4 &
wait

来自bash手册页:

  等等[n ...]                 等待每个指定的进程并返回它   终止状态。每个n可以是a   进程ID或作业规范;如果   给出了工作规范,所有流程都在   那个工作的管道都在等待。   如果没有给出n,                 等待所有当前活动的子进程,并且   返回状态为零。如果是   指定不存在的进程或   工作,返回状态是127。   否则,返回状态为   退出状态的最后一个                 过程或工作等待。

答案 1 :(得分:5)

xargs可以支持并行

就像这样:

seq 4|xargs -i -n 1 -P 4 ./test{} 

答案 2 :(得分:4)

的内容
cd /tests
./test1 &
./test2 &
./test3 &
./test4 &
wait
exit

(我假设是bash shell)