喂我与使用的rcS脚本启动模拟器的工作,这是我的脚本执行多项任务
cd /tests
./test1 &
./test2 &
./test3 &
./test4
exit
我想要的是运行所有测试在同一时间,并且仅当所有先前的测试完成时才执行退出命令。不仅当测试4完成时,这是可能的吗? 谢谢。沿
cd /tests
./test1 &
./test2 &
./test3 &
./test4 &
wait
exit
线
喂我与使用的rcS脚本启动模拟器的工作,这是我的脚本执行多项任务
cd /tests
./test1 &
./test2 &
./test3 &
./test4
exit
我想要的是运行所有测试在同一时间,并且仅当所有先前的测试完成时才执行退出命令。不仅当测试4完成时,这是可能的吗? 谢谢。沿
cd /tests
./test1 &
./test2 &
./test3 &
./test4 &
wait
exit
线
您可以使用等待:
./test1 &
./test2 &
./test3 &
./test4 &
wait
从bash的手册页:
等待[n ...] 等待e ach指定进程并返回其终止状态 。每个n可以是一个 进程ID或工作规范;如果给出了作业规范 ,则等待作业管线的 中的所有进程。 如果没有给出n,则 等待所有当前活动的子进程,并且 返回状态为零。如果n 指定了一个不存在的进程或 作业,则返回状态为127. 否则,返回状态为最后一个 进程或作业等待的 退出状态。
注意,如果你试图运行一个php脚本,配置php会阻止进程在后台运行输出任何东西。我发现很难让Google知道如何打开默认行为。我最终发现了这个问题:http://serverfault.com/q/564720/210994 – ThorSummoner 2015-01-15 21:39:14
东西(我假设的bash shell)
打我吧:) – 2009-01-09 23:58:20
xargs
可以支持并行
所以就像这样:
seq 4|xargs -i -n 1 -P 4 ./test{}
哪个标志是激活并行执行的标志?并且所有的子处理都几乎在同一时间开始? – ThorSummoner 2015-01-15 20:55:55
你可能要替换 “./exit” 只用 “退出”,退出shell脚本。如果您实际上在该目录中运行一个名为'exit'的可执行文件或脚本,我建议将其重命名为不太令人混淆的内容。 – 2009-01-10 21:48:50