Tâche de fond
Dans un système informatique, un processus en tâche de fond (ou en arrière-plan) est un processus non attaché explicitement à un terminal[1], ou plus précisément sans interaction avec un utilisateur[2].
En environnement Unix
Sous shell Unix, démarrer un processus en tâche de fond consiste à le lancer en ligne de commande tout en gardant la main sur le Shell qui l'a lancé.
Utilisation
L'objectif de la mise en tâche de fond est d'indiquer ou non à l'interface système, le shell Unix, s'il doit attendre ou pas la fin du processus dont il lancera l’exécution.
En effet, si un utilisateur lance par exemple l'éditeur de texte « gedit » à l'aide de la commande gedit
, celui-ci bloque l'invité de commande et par conséquent, l'utilisateur ne peut plus exécuter de commande car le système attend la fin de la tâche lancée. En lançant le processus en tâche de fond à l'aide du caractère &
à la fin de la commande[3], l'interpréteur de commandes exécute le programme tout en redonnant la main, ce qui permettra d'exécuter une nouvelle ligne de commande.
La commande jobs
permet d'afficher les processus qui s'exécutent en tâche de fond[3].
Certains shells permettent aussi de stopper une commande en premier plan à l'aide de "Control-Z" puis de la basculer en tâche de fond à l'aide de la commande "bg" (et son symétrique "fg" qui la bascule au premier plan). Cependant, avec certains shells, ce contrôle ne passe que le processus courant en tâche de fonds et des boucles de type "while/do/done" ou "for/do/done" se trouvent interrompues.
À noter aussi, la commande "nohup" qui permet de lancer une tâche en la détachant du terminal ("nohup command &") ce qui permet de fermer le terminal sans que la tâche ne soit tuée.
Notes et références
- BSD: Les dessous d'Unix, Eyrolles, (ISBN 9782212056631)
- (en) http://www.linux-tutorial.info/modules.php?name=MContent&pageid=3
- « Traitement en tâche de fond », sur linux-france.org via Wikiwix (consulté le ).