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

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

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

有帮助吗?

解决方案

您可以使用wait:

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

来自bash手册页:

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

其他提示

xargs 可以支持并行

就像这样:

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

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

(我假设是bash shell)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top