Question

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.

Was it helpful?

Solution

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.

OTHER TIPS

xargs can support parallel

So just like this:

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

Something along the lines of

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

(I am assuming bash shell)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top