Bonjour à tous,
J'ai concocté un programme tout bête permettant de lancer des commandes en parallèle. Il fonctionne parfaitement bien mais j'aurai voulu l'optimiser.
Voici mon "soucis"
Le script lance deux commandes simultanément comme ceci :
Bon, ne faites pas attention à la qualité du code. Evidemment, une optimisation est à prévoir mais ce n'est pas le problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 echo "Lancement de la chaine 1" nohup lancechaine.ksh -c 1 > $LOGS/ALIM_TABLES_1.log & PID_1=$! RETOUR_1=$? sleep 5 echo "Lancement de la chaine 2" nohup lancechaine.ksh -c 2 > $LOGS/ALIM_TABLES_2.log & PID_2=$! RETOUR_2=$? printf "\nJOBS EN COURS\n" wait ${PID_1} echo "Chaine 1 termine : CODE RETOUR ${RETOUR_1}" echo "Resultats du traitement : $LOGS/ALIM_TABLES_1.log" wait ${PID_2} echo "Chaine 2 termine : CODE RETOUR ${RETOUR_2}" echo "Resultats du traitement : $LOGS/ALIM_TABLES_2.log"
Le soucis est le suivant : il se peut que la chaîne 2 se termine avant la première. Dans ce cas, il faudrait que le message concernant la deuxième chaîne s'affiche dès qu'elle terminée.
Dans mon code, le message s'affichera dès que le processus 1 sera terminé. En gros je voulais savoir s'il était possible de boucler indéfiniment sur les processus en cours et d'afficher un message dès qu'une des chaînes se termine.
Evidemment, mon code contient une trentaine de chaîne ce qui est bien plus pertinent.
N'hésitez pas à me faire préciser des points qui n'ont pas été clair.
Merci pour votre contribution![]()
Partager