Exécuter plusieurs programmes en même temps dans un script d'initialisation / bash
Question
Bonjour, je travaille avec un simulateur qui utilise des scripts rcS pour démarrer, c’est mon script
cd /tests
./test1 &
./test2 &
./test3 &
./test4
exit
Ce que je veux, c’est d’exécuter tous les tests en même temps et que la commande de sortie ne soit exécutée que lorsque tous les tests précédents sont terminés. Et pas seulement lorsque le test 4 est terminé, est-ce possible ?. Merci.
La solution
Vous pouvez utiliser wait:
./test1 &
./test2 &
./test3 &
./test4 &
wait
À partir de la page de manuel bash:
attendez [n ...] Attendez chaque processus spécifié et renvoyez son statut de résiliation. Chaque n peut être un ID de processus ou une spécification de travail; si une spécification de travail est donnée, tous les processus de le pipeline de ce travail est attendu. Si n n'est pas donné, tous les processus enfants actuellement actifs sont attendus, et l'état de retour est zéro. Si n spécifie un processus inexistant ou travail, le statut de retour est 127. Sinon, le statut de retour est le état de sortie du dernier processus ou travail attendu.
Autres conseils
xargs
peut prendre en charge le mode parallèle
Si juste comme ça:
seq 4|xargs -i -n 1 -P 4 ./test{}
Quelque chose dans le sens de
cd /tests
./test1 &
./test2 &
./test3 &
./test4 &
wait
exit
(je suppose que bash shell)