next up previous contents index
Next: Affichage des processus en Up: Gestion des processus Previous: Gestion des processus

   
Traitement en tâche de fond

On peut lancer une commande en tâche de fond (le nom de la commande est suivit par '&') pour pouvoir garder la main pour lancer d'autres commandes depuis le terminal (sans quoi on ne peut plus lancer aucune commande jusqu'à la fin de l'exécution de la commande). Attention cependant, cette commande ne doit doit pas avoir de sortie écran ou attendre d'entrée clavier. Par exemple, la commande suivante recherche tous les fichiers dont le nom commence par ``install'' :

find / -type f -name "install*" -print > liste 2> /dev/null &
 

Cette commande étant assez longue, on peut ainsi continuer à travailler sur la même console ou la même fenêtre xterm. Pour supprimer les sorties écran, on redirige la sortie standard vers un fichier, et la sortie d'erreur standard vers le ``trou noir''.

Lorsqu'on lance une commande en tâche de fond, deux numéros apparaissent :    

[1] 439

qui indiquent les numéros de tâche de fond et de processus. Le numéro de tâche de fond est celui qui correspond au numéro de processus en action, qu'il tourne ou non. Si on lance une autre commande, elle aura un autre numéro de tâche de fond :

[2] 442

Le numéro de processus est le même que celui qui est affiché par la commande ps, et qui sert à forcer l'arrêt d'une commande grâce à la commande kill :

439  p2 D      0:02 find / -type f -name install* -print

La commande jobs permet d'afficher les commandes qui s'éxecutent en arrière plan :  

[3]-  Running  find / -type f -name "install*" 
-print >liste 2>err.moi &

L'option -l permet d'afficher en plus le numéro de processus :

[4]+ 455  Running  find / -type f -name "install*" -print
>liste 2> /dev/null &

En appuyant sur les touches
Ctrl+z
(ou celles définies par la ligne ``susp = '' de la commande stty -a), on peut stopper l'éxecution d'une commande. Elle se retrouve alors en arrière plan, comme l'indique le résultat de la commande jobs :

[4]+  Stopped  find / -type f -name "install*" -print
>liste 2> /dev/null

On peut relancer la commande en arrière plan avec la commande bg %4, ou en avant plan avec la commande fg %4. Au lieu du numéro de job, on peut spécifier le numéro de processus.    

Si on veut voir exécuter la commande d'arrière plan en avant plan, il faut appeller la commande kill avec l'option -STOP pour suspendre le processus, et avec l'option -CONT pour le relancer (respectivement kill -STOP %4 et kill -CONT %4).  

Si il faut attendre la fin d'un processus particulier avant de reprendre la main, on peut lancer la commande en tâche de fond, puis invoquer la commande wait %4. On pourra continuer dès que le processus spécifié sera terminé.  


next up previous contents index
Next: Affichage des processus en Up: Gestion des processus Previous: Gestion des processus
MATHIEU DECORE
1999-11-03
Merci de me dire ce que pensez de ce document.