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 |
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é.