2009-01-09 9 views
4

Bonjour Je travaille avec un simulateur qui utilise des scripts rcS pour démarrer, c'est mon scriptExécuter plusieurs programmes en même temps dans un script d'initialisation/bash

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

Ce que je veux courir tout le test à en même temps et que la commande exit n'est exécutée que lorsque tous les tests précédents sont terminés. Et pas seulement quand le test 4 est terminé, est-ce possible? Merci.

+0

Vous voulez probablement remplacer "./exit" avec juste "sortie" pour quitter le script shell. Si vous exécutez un exécutable ou un script nommé 'exit' dans ce répertoire, je suggère de le renommer quelque chose de moins déroutant. –

Répondre

8

Vous pouvez utiliser attente:

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

Sur la page man bash:

wait [n ...] Attendre e tout processus spécifié et renvoie son statut de terminaison . Chaque n peut être un ID de processus ou une spécification de tâche; Si une spécification de travail est donnée, tous les processus dans pipeline de ce travail sont attendus. Si n n'est pas indiqué, tous les processus enfants actuellement actifs sont attendus et l'état de retour est zéro. Si n spécifie un processus inexistant ou un travail , le statut de retour est 127. Sinon, le statut de retour est le statut de sortie du dernier processus ou du travail attendu.

+0

Notez, si vous essayez d'exécuter un script php, les configurations de php empêcheront les processus exécutés en arrière-plan de sortir quoi que ce soit. J'ai découvert qu'il est difficile à Google pour savoir comment activer les comportements par défaut. J'ai finalement trouvé cette question: http://serverfault.com/q/564720/210994 – ThorSummoner

4

Quelque chose le long des lignes de

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

(Je suppose shell bash)

+0

Battez-moi :) :) –

5

xargs peut soutenir en parallèle

donc comme ceci:

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

Quel drapeau est celui qui active l'exécution parallèle? Et Est-ce que tous les sous-traitants commencent presque à la même heure? – ThorSummoner

Questions connexes