Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Execute several programs at the same time in an initialisation/bash script

Hello I am working with a simulator that uses rcS scripts to boot, this is my script

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

What I want is run all the test at the same time and that the exit command is executed only when all the previous test have finished. And not only when test 4 has finished, is this possible?. Thank you.

like image 738
Eduardo Avatar asked Dec 04 '22 16:12

Eduardo


2 Answers

You can use wait:

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

From the bash man page:

wait [n ...] Wait for each specified process and return its termination status. Each n may be a process ID or a job specification; if a job spec is given, all processes in that job's pipeline are waited for. If n is not given, all currently active child processes are waited for, and the return status is zero. If n specifies a non-existent process or job, the return status is 127. Otherwise, the return status is the exit status of the last process or job waited for.

like image 56
gak Avatar answered Dec 11 '22 15:12

gak


xargs can support parallel

So just like this:

seq 4|xargs -i -n 1 -P 4 ./test{} 
like image 30
firejox Avatar answered Dec 11 '22 15:12

firejox