Commande Linux fg

Linux 命令大全Liste complète des commandes Linux

fgC'est une commande importante pour le contrôle des processus dans les systèmes Linux/Unix, dont le nom complet est « foreground ». Sa fonction principale est de faire passer au premier plan les tâches s'exécutant en arrière-plan afin qu'elles poursuivent leur exécution.

Pourquoi avez-vous besoin de la commande fg

Imaginez que vous passez commande dans un restaurant :

  1. Vous commandez un plat principal (processus au premier plan)
  2. En même temps, demandez à la cuisine de préparer le dessert (processus en arrière-plan)
  3. Lorsque vous avez terminé le plat principal, vous pouvez demander au serveur de vous apporter le dessert (commande fg)

Sous Linux, ce mécanisme de bascule des tâches entre le premier plan et l'arrière-plan vous permet de :

  • Contrôler de manière flexible l'ordre d'exécution de plusieurs tâches
  • Suspendre temporairement la tâche en cours pour gérer des tâches plus urgentes
  • Utiliser efficacement les sessions de terminal

Syntaxe de base

fg [作业标识]

Description du paramètre

Paramètre Description
Aucun paramètre Reprendre la tâche la plus récemment mise en arrière-plan
%n Reprendre la tâche portant le numéro de tâche n
%str Reprendre la tâche commençant par str
%?str Reprendre la tâche contenant str
%+ ou %% Équivalent à l'absence de paramètre ; reprend la tâche la plus récente
%- Reprendre la deuxième tâche la plus récemment mise en arrière-plan

Exemples d'utilisation

Exemple 1 : Utilisation de base

  1. Démarrer une tâche de longue durée et la mettre en arrière-plan :

    sleep 60 &
    [1] 12345  # 系统返回作业号 [1] 和进程ID 12345
  2. Afficher la liste actuelle des tâches :

    jobs
    [1]+  运行中               sleep 60 &
  3. Ramener la tâche au premier plan :

    fg %1
    # 或者简写为
    fg

Exemple 2 : Reprendre une tâche spécifique

Exemple

# Démarrer plusieurs tâches en arrière-plan
python script1.py &
python script2.py &

# Afficher la liste des tâches
jobs
[1]- En cours python script1.py&
[2]+ En cours python script2.py&

# Reprendre la première tâche
fg %1

Comment ça marche

Transition d'état de processus

Exemple

graph LR
A[Exécution au premier plan] -->|Ctrl+Z| B[Suspendu]
    B -->|fg| A
B -->|bg| C[Exécution en arrière-plan]
    C -->|fg| A
  1. Processus au premier plan: Occupe le terminal, reçoit les entrées du clavier
  2. Processus en arrière-plan: N'occupe pas le terminal, ne peut pas recevoir d'entrées
  3. Processus suspendu: Est suspendu, en attente d'être repris

Mécanisme de signal

Lors de l'exécutionfg:

  1. Le système envoie à la tâcheSIGCONTsignal (continuer l'exécution)
  2. Définir le groupe de processus de la tâche comme groupe de processus de premier plan du terminal
  3. Le terminal redirige les entrées/sorties vers le processus

FAQ

Q1 : Comment savoir quels travaux en arrière-plan existent actuellement ?

Utiliserjobscommande pour afficher :

Exemple

jobs -l

Exemple de sortie :

[1]- 12345 运行中        sleep 100 &
[2]+ 12346 停止         vim file.txt

Q2 : Quelle est la différence entre fg et bg ?

Commande Fonction Contrôle du terminal
fg Amener la tâche au premier plan Occupe le terminal
bg Laisser la tâche suspendue continuer à s'exécuter en arrière-plan N'occupe pas le terminal

Q3 : Pourquoi le programme ne peut-il pas recevoir d'entrée après fg ?

Il se peut que le programme soit suspendu (affiché comme « arrêté ») ; vous devez d'abord envoyer un signal de reprise :

Exemple

kill -CONT <PID>
fg %1

Scénarios d'application pratiques

Scénario 1 : Développement et débogage

>

Démarrez le serveur de développement :

Exemple

python manage.py runserver
# Appuyez sur Ctrl+Z pour suspendre
[1]+ Arrêté python manage.py runserver

Exécutez temporairement d'autres commandes

Reprenez le serveur :

Exemple

fg

Scénario 2 : Édition de fichiers

Exemple

vim important_file.txt
# Appuyez sur Ctrl+Z pour suspendre l'édition

# Afficher le contenu du fichier
cat related_file.txt

# Revenir à l'édition
fg

Notes

  1. Association au terminal: Les tâches en arrière-plan sont associées au terminal qui les a lancées ; fermer le terminal mettra fin aux tâches
  2. Interférence de sortie: La sortie d'une tâche en arrière-plan peut soudainement apparaître au premier plan, perturbant le travail en cours
  3. Limites de permissions: Certains programmes nécessitant une interaction avec le terminal (comme la saisie d'un mot de passe) ne peuvent pas s'exécuter en arrière-plan
  4. Réutilisation des numéros de tâche: Les numéros de tâche sont uniques au sein d'une session, mais les différentes sessions de terminal sont comptées indépendamment

Astuces avancées

Utilisation avec nohup

Laisser la tâche s'exécuter en arrière-plan de manière persistante (même si vous quittez le terminal) :

Exemple

nohup long_running_task &
# Vous pouvez vous reconnecter et reprendre plus tard
fg %1

Utilisation de disown pour détacher

Exemple

python server.py &
jobs -l               # Notez le numéro de tâche
disown %1             # Détacher du terminal
# Vous pouvez maintenant fermer le terminal en toute sécurité

Linux 命令大全Liste complète des commandes Linux

Autres extensions