Sommaire

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

ksh

bash

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

wait %job

Exemples

La commande find est lancée en arrière-plan. Elle a pour PID 13415 :

$ find / -name passwd 1> /tmp/res 2> /dev/null& 
[1] 13415 
$ jobs  
[1]+  Running   find / -name passwd >/tmp/res 2>/dev/null &

Le shell s’endort en attendant la terminaison du processus 13415 :

$ wait 13415 # ou wait %1

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

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

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

Le script attendproc.sh lance une sauvegarde en arrière-plan. Pendant que celle-ci se déroule, le shell effectue d’autres actions. Puis il attend la fin de la sauvegarde avant de lancer une vérification de la bande :

$ nl attendproc.sh 
     1  #! /usr/bin/ksh 
        
     2  # Lancement d’une commande de sauvegarde en arriere-plan 
     3  find / | cpio -ocvB > /dev/rmt/0 & 
     4  echo "Le PID du processus ...