Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

attendez

Nous allons démontrer le attendez commande en premier. Pour ce faire, nous aurons besoin de deux scripts, un script parent :


#! / Bin / bash


# async-parent : Démo d'exécution asynchrone (parent) echo "Parent : démarrage..."

echo "Parent : lancement du script enfant..." async-child &

pid=$ !

echo "Parent : enfant (PID= $pid) lancé."


echo "Parent : continue..." sommeil 2


echo "Parent : pause pour attendre la fin de l'enfant..." wait $pid


echo "Parent : l'enfant a terminé. Continuation..." echo "Parent : le parent a terminé. Sortie."

#! / Bin / bash


# async-parent : Démo d'exécution asynchrone (parent) echo "Parent : démarrage..."

echo "Parent : lancement du script enfant..." async-child &

pid=$ !

echo "Parent : enfant (PID= $pid) lancé."


echo "Parent : continue..." sommeil 2


echo "Parent : pause pour attendre la fin de l'enfant..." wait $pid


echo "Parent : l'enfant a terminé. Continuation..." echo "Parent : le parent a terminé. Sortie."


et un script enfant :



#! / Bin / bash

# async-child : démo d'exécution asynchrone (enfant) echo "Enfant : l'enfant est en cours d'exécution..."

sommeil 5

echo "Enfant : l'enfant a terminé. Sortie."

#! / Bin / bash

# async-child : démo d'exécution asynchrone (enfant) echo "Enfant : l'enfant est en cours d'exécution..."

sommeil 5

echo "Enfant : l'enfant a terminé. Sortie."


Dans cet exemple, nous voyons que le script enfant est très simple. L'action réelle est effectuée par le parent. Dans le script parent, le script enfant est lancé et mis en arrière-plan. L'ID de processus du script enfant est enregistré en attribuant le Pid variable avec la valeur de $! paramètre shell, qui contiendra toujours l'ID de processus du dernier travail mis en arrière-plan.

Le script parent continue puis exécute un attendez avec le PID du processus fils. Cela provoque la pause du script parent jusqu'à ce que le script enfant se termine, moment auquel le script parent se termine.

Lorsqu'ils sont exécutés, les scripts parent et enfant produisent la sortie suivante :



[moi@linuxbox ~]$ parent asynchrone

Parent : à partir de...

[moi@linuxbox ~]$ parent asynchrone

Parent : à partir de...

Exécution asynchrone


Parent : lancement du script enfant... Parent : enfant (PID= 6741) lancé. Parent : suite...

Enfant : l'enfant court...

Parent : pause pour attendre la fin de l'enfant... Enfant : l'enfant a terminé. Sortie.

Parent : l'enfant a fini. Continuer... Parent : le parent a terminé. Sortie.

Parent : lancement du script enfant... Parent : enfant (PID= 6741) lancé. Parent : suite...

Enfant : l'enfant court...

Parent : pause pour attendre la fin de l'enfant... Enfant : l'enfant a terminé. Sortie.

Parent : l'enfant a fini. Continuer... Parent : le parent a terminé. Sortie.


Meilleur système d'exploitation Cloud Computing chez OnWorks :