| Linux-Mandrake: Manuel de référence | ||
|---|---|---|
| Page précédente | Chapitre 2. Introduction à la ligne de commande | Page suivante |
Vous aurez remarqué que quand vous lancez une commande à partir d'un terminal, vous devez normalement attendre que la commande soit terminée pour que le shell vous rende la main : vous avez lancé la commande au premier plan. Il y a des situations, cependant, où cela n'est pas souhaitable.
Supposons, par exemple, que vous ayez entrepris de copier récursivement un gros répertoire vers un autre. Vous décidez également d'ignorer les erreurs, donc vous redirigez le canal d'erreur vers /dev/null :
cp -R images/ /shared/ 2>/dev/null
Une telle commande peut prendre plusieurs minutes avant de se terminer. Vous disposez alors de deux solutions : la première, brutale, est d'interrompre (de tuer) la commande pour la relancer plus tard, quand vous aurez le temps. Pour ce faire, tapez C-c (Control+c) : vous reviendrez alors à l'invite.
Mais vous souhaiteriez quand même que la commande s'exécute tout en faisant autre chose. La solution est alors de mettre le processus en arrière-plan. Pour ce faire, tapez C-z pour suspendre le processus :
$ cp -R images/ /shared/ 2>/dev/null # Tapez C-z [1]+ Stopped cp -R images/ /shared/ 2>/dev/null $ |
et vous revoilà devant le prompt. Le processus est alors suspendu en attente que vous le relanciez (comme l'indique le mot-clé Stopped, arrêté). C'est ce que vous voulez faire, bien sûr, mais à l'arrière-plan. Tapez bg (pour BackGround, arrière-plan), cela aura l'effet escompté :
$ bg [1]+ cp -R images/ /shared/ 2>/dev/null & $ |
Le processus aura alors repris son exécution en tâche de fond, ce qu'indique le signe & (esperluette) à la fin de la ligne. Vous vous retrouvez alors en face de l'invite et pouvez continuer à travailler. Un processus qui tourne en tâche de fond, ou arrière-plan, est appelé un job.
Vous pouvez bien sûr lancer directement des processus en tâche de fond, justement en ajoutant une & à la fin de la commande. Ainsi vous pouvez lancer la copie du répertoire en arrière-plan en écrivant :
cp -R images/ /shared/ 2>/dev/null &
Si vous le souhaitez, vous pouvez également remettre ce processus au premier plan et attendre qu'il se termine en tapant fg (pour ForeGround, premier plan). Répétez alors la séquence C-z, bg pour le remettre à l'arrière-plan.
Vous pouvez lancer plusieurs jobs de cette façon : chacune de ces commandes recevra alors un numéro de job. La commande jobs du shell indique la liste de tous les jobs associés au shell courant. Le job précédé d'un signe + désigne le dernier processus mis en tâche de fond. Pour remettre au premier plan un job en particulier, vous pourrez alors taper fg <n> où <n> désigne le numéro de job, par exemple fg 5.
Notez que vous pouvez également suspendre ou lancer de cette façon des applications plein écran (si elles sont correctement programmées), telles que less ou un éditeur de texte comme VI, et les remettre au premier plan quand vous le voulez.
| Page précédente | Début | Page suivante |
| Le complètement | Remonter | Un dernier mot |