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

Edu*_*rdo 4 linux bash scripting rcs

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

cd /tests
./test1 &
./test2 &
./test3 &
./test4 
exit
Run Code Online (Sandbox Code Playgroud)

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

gak*_*gak 8

你可以使用wait:

./test1 &
./test2 &
./test3 &
./test4 &
wait
Run Code Online (Sandbox Code Playgroud)

从bash手册页:

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


小智 5

xargs 可以支持并行

就像这样:

seq 4|xargs -i -n 1 -P 4 ./test{} 
Run Code Online (Sandbox Code Playgroud)