Führen Sie mehrere Programme gleichzeitig in einem Initialisierungs-/Bash -Skript aus
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.
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