Linux / Commande bg : reprendre une tâche suspendue en arrière-plan
bg reprend en arrière-plan une tâche du shell Bash courant qui a été suspendue. Vous pouvez ainsi continuer à utiliser le terminal pendant que cette tâche avance. Contrairement à fg, bg ne lui rend pas la lecture du terminal au premier plan : un programme qui attend une saisie peut se suspendre de nouveau.
Identifier une tâche suspendue
bg [spécification-de-tâche…]
Bg est une commande interne de Bash et nécessite le contrôle des tâches. Consultez help bg pour votre shell. Dans un terminal interactif, Ctrl+Z est habituellement la combinaison qui suspend la tâche au premier plan et rend la main au shell.
Après cette suspension, consultez les tâches arrêtées et leurs PID :
jobs -s
jobs -l
Une tâche indiquée Stopped est suspendue, pas terminée. Le numéro entre crochets appartient à la table du shell : jobs et la distinction entre numéro de tâche et PID expliquent cette portée. Vous ne pouvez pas désigner une tâche d'un autre terminal avec le même numéro et espérer contrôler le même processus.
Suspendre puis reprendre un exemple complet
Dans un terminal Bash interactif où le contrôle des tâches est actif, lancez cette attente au premier plan :
sleep 60
Pendant qu'elle attend, appuyez sur Ctrl+Z. Il s'agit d'une combinaison de touches, pas d'un texte à saisir. Lorsque l'invite réapparaît, contrôlez :
jobs -l
Si le sleep apparaît comme tâche 1 suspendue, reprenez-le ainsi ; sinon, remplacez %1 par la spécification correspondant au numéro réellement affiché :
bg %1
jobs -l
Le changement d'état attendu, illustré sans PID réel, est :
[1]+ Stopped sleep 60
[1]+ Running sleep 60 &
Le shell vous permet maintenant de lancer d'autres commandes pendant que sleep termine son attente. Bg reprend la tâche existante ; il ne lance pas une seconde instance de sleep. La tâche peut avoir terminé lorsque vous consultez de nouveau sa liste, selon le temps écoulé.
Pour ramener cette même tâche au premier plan avant sa fin, utilisez fg %1, en vérifiant toujours son numéro. Vous pouvez ensuite la laisser finir ou interrompre ce sleep de test avec Ctrl+C. Si elle a déjà terminé, vérifiez jobs plutôt que de réutiliser son ancien numéro. Aucun fichier n'est créé par cet exercice.
Choisir explicitement la tâche
| Spécification | Tâche utilisée par Bash |
|---|---|
%N |
La tâche numéro N du shell courant. |
%+ |
La tâche courante du contrôle des tâches. |
%- |
La tâche précédente. |
| Aucun argument | La tâche considérée comme courante par Bash. |
Quand plusieurs tâches existent, un numéro vérifié est plus clair qu'une hypothèse sur la tâche courante. Le marqueur + de jobs aide à lire cette sélection ; il ne signifie pas que la tâche consomme davantage de CPU.
Mettre & à la fin d'une nouvelle commande la lance directement en arrière-plan. Bg sert à reprendre en arrière-plan une tâche déjà présente dans la table du shell. Ni l'un ni l'autre ne transforme automatiquement cette tâche en service persistant.
Comprendre un échec ou une nouvelle suspension
Un shell sans contrôle des tâches, un numéro inexistant ou une tâche déjà terminée peut faire échouer bg. Regardez jobs -l dans le même shell et vérifiez son aide au lieu d'essayer le numéro d'un autre terminal.
Une tâche en arrière-plan qui tente de lire le terminal reçoit normalement SIGTTIN et peut s'arrêter de nouveau. Cela concerne particulièrement les programmes interactifs : les relancer avec bg ne leur donne pas la saisie du premier plan. Ramenez la bonne tâche avec fg si elle a réellement besoin de votre interaction.
La sortie d'une tâche peut encore apparaître dans le terminal et se mêler à vos commandes. Si un programme doit fonctionner durablement sans interaction, préparez dès son lancement les entrées-sorties et l'outil de gestion adaptés ; bg seul n'assure pas la survie à la fermeture du terminal.
Le manuel des commandes bg, fg et jobs décrit leur fonctionnement ; les principes du contrôle des tâches de Bash expliquent le premier plan et les signaux liés au terminal.




