Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在初始化/bash脚本中同时执行多个程序_Linux_Bash_Scripting_Rcs - Fatal编程技术网

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

Linux 在初始化/bash脚本中同时执行多个程序,linux,bash,scripting,rcs,Linux,Bash,Scripting,Rcs,您好,我正在使用一个使用rcS脚本引导的模拟器,这是我的脚本 cd /tests ./test1 & ./test2 & ./test3 & ./test4 exit 我想要的是同时运行所有的测试,并且只有在前面的所有测试都完成后才执行exit命令。不仅当测试4完成时,这是可能的吗?。 谢谢。类似于 cd /tests ./test1 & ./test2 & ./test3 & ./test4 & wait exit (我假设bash

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

cd /tests
./test1 &
./test2 &
./test3 &
./test4 
exit
我想要的是同时运行所有的测试,并且只有在前面的所有测试都完成后才执行exit命令。不仅当测试4完成时,这是可能的吗?。
谢谢。

类似于

cd /tests
./test1 &
./test2 &
./test3 &
./test4 &
wait
exit
(我假设bash shell)

您可以使用wait:

./test1 &
./test2 &
./test3 &
./test4 &
wait
从bash手册页:

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


xargs
可以支持并行

就这样,

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

您可能希望将“/exit”替换为“exit”以退出shell脚本。如果您实际上正在该目录中运行一个名为“exit”的可执行文件或脚本,我建议将其重命名为不太容易混淆的名称。哪个标志激活并行执行?所有的子进程都几乎/完全同时启动吗?注意,如果您试图运行php脚本,那么php的配置将阻止后台运行的进程输出任何内容。我发现谷歌很难知道如何开启默认行为。我最终发现了这个问题: