Gestion d'un processus en arrière plan

La commande wait permet au shell d'attendre la terminaison d'un processus lancé en arrière-plan.

Syntaxes :

Attendre la terminaison du processus dont le PID est donné en argument :

wait pid1

Attendre la terminaison de tous les processus lancés en arrière-plan à partir du shell courant :

wait

Attendre la terminaison du processus dont le numéro de job est donné en argument :

wait %job

Exemples :

La commande find est lançée en arrière-plan et a pour PID 2878 :

$ find / -name /etc/passwd 1>/tmp/resu 2>/dev/null &
[1] 2878
$ jobs
[1]+  Running                 find / -name /etc/passwd > /tmp/resu 2> /dev/null &
$

Le shell s'endort en attendant la terminaison du processus 2878 :

$ wait 2878     # Ou wait %1

Le shell est réveillé lorsque le processus 2878 est terminé :

$ .
[1]+  Exit 1                  find / -name /etc/passwd > /tmp/resu 2> /dev/null
$

Le PID de la dernière commande lançée en arrière-plan est contenu dans la variable spéciale $!

Le script suivant lance en arrière-plan une recherche du fichier /etc/passwd (ligne 3).
D'autres actions peuvent être exécutées en attendant (ligne 5 à 8) puis le shell attend la fin de la recherche (ligne 9) avant d'afficher à l'écran le contenu du fichier /tmp/resu (ligne 12).

$ nl test_wait_1.sh
     1  #!/bin/bash
     2
     3  find / -name /etc/passwd 1>/tmp/resu 2>&1 &
     4  echo "Le PID du script lancé en arrière-plan est le : $!"
     5  echo "Début des autres commandes"
     6
     7  echo "Fin des autres commandes"
     8  echo "Recherche en cours - Attente de la fin de la recherche"
     9  wait $!
    10  echo "La recherche est terminée"
    11  echo "Affichage du résultat"
    12  most /tmp/resu
    13  exit 0
$
$ ./test_wait_1.sh
Le PID du script lancé en arrière-plan est le : 11697
Début des autres commandes
Fin des autres commandes
Recherche en cours - Attente de la fin de la recherche
.....      # Le shell s'endort
.....
La recherche est terminée
Affichage du résultat
$

Ajouter un commentaire

Filtered HTML

  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
CAPTCHA
Cette question permet de s'assurer que vous êtes un utilisateur humain et non un logiciel automatisé de pollupostage.
CAPTCHA visuel
Entrez les caractères (sans espace) affichés dans l'image.