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.

Était-ce utile?

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)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top