Frage

Hallo, ich arbeite mit einem Simulator, der RCS -Skripte zum Booten verwendet. Dies ist mein Skript

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

Was ich möchte, ist, den gesamten Test gleichzeitig auszuführen und der Befehl Exit nur ausgeführt wird, wenn der gesamte vorherige Test abgeschlossen ist. Und nicht nur, wenn Test 4 fertig ist, ist das möglich? Vielen Dank.

War es hilfreich?

Lösung

Sie können warten:

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

Aus der Seite Bash Man:

Warten Sie [n ...] Warten Sie auf jeden angegebenen Prozess und geben Sie seinen Kündigungsstatus zurück. Jedes N kann eine Prozess -ID oder eine Jobspezifikation sein. Wenn eine Jobspezifikation angegeben wird, werden alle Prozesse in der Pipeline dieses Jobs gewartet. Wenn N nicht angegeben ist, werden alle derzeit aktiven Kinderprozesse gewartet und der Rückgabebatus ist Null. Wenn n einen nicht existierenden Prozess oder einen Job angibt, beträgt der Rückgabebatus 127. Andernfalls ist der Rückgabebatus der Exit-Status des letzten Prozesses oder des Arbeitsplatzes gewartet.

Andere Tipps

xargs kann parallel unterstützen

Also einfach so:

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

Etwas im Sinne von

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

(Ich gehe davon aus

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top