Dans les systèmes Linux et Unix, un travail est défini comme une tâche qui a commencé à s'exécuter et qui n'est pas encore terminée. Chaque tâche est essentiellement un programme en cours d'exécution qui est un processus.
Chaque travail se voit attribuer un identifiant unique appelé numéro de travail (Job ID). Nous pouvons exécuter les travaux en arrière-plan sans aucune intervention de l'utilisateur et également être exécutés au premier plan en tant que travaux en cours.
Dans ce didacticiel, nous découvrons les commandes fg et bg pour gérer les tâches sous Linux.
commande bg
Les processus qui ont été arrêtés par un signal d'interruption peuvent être poursuivis en arrière-plan avec la commande bg.
$ nautilus
^Z
[1]+ Stopped nautilus
Ce processus a été arrêté avec ctrl+z
signal d'interruption. Les processus arrêtés peuvent être vérifiés avec la commande jobs. Mais avant de vérifier, créons un autre travail et interrompons-le avec un signal d'arrêt.
$ jedit
9:22:28 AM [main] [warning] jEdit: inifPLAF failed to set required l&f
9:22:29 AM [main] [warning] jEdit: inifPLAF failed to set required l&f
^Z
[2]+ Stopped jedit
$ jobs
[1]- Stopped nautilus
[2]+ Stopped jedit
Vous pouvez voir que l'état des travaux est arrêté. Le signe plus (+) indique la tâche en cours. Le signe moins (-) fait référence au travail précédent. Maintenant, pour exécuter le travail arrêté en arrière-plan, nous utilisons la commande bg. Par défaut, si aucun argument n'est donné, bg exécute la tâche en cours en arrière-plan.
$ bg
[2]+ jedit &
$ jobs
[1]+ Stopped nautilus
[2]- Running jedit &
La commande bg peut prendre le numéro de travail comme argument. Le numéro de travail est indiqué entre crochets dans la sortie des travaux.
Dans l'exemple ci-dessus, le numéro de travail de nautilus est 1. Nous utilisons donc maintenant ce numéro de travail pour exécuter le travail en arrière-plan. Le %
signe est requis pour indiquer le numéro de travail.
$ bg %1
[1]+ nautilus &
$ jobs
[1]- Running nautilus &
[2]+ Running jedit &
La commande bg peut également faire référence à une tâche par son nom. Par exemple %String
fait référence à une tâche dont le nom commence par la chaîne spécifiée et %?String
fait référence à une tâche dont le nom contient la chaîne spécifiée.
À titre d'illustration, nous avons deux travaux arrêtés.
$ jobs
[1]+ Stopped nautilus
[2]- Stopped jedit
$ bg %nau
[1]+ nautilus &
$ jobs
[1]- Running nautilus &
[2]+ Stopped jedit
$ bg %?ed
[2]+ jedit &
$ jobs
[1]- Running nautilus &
[2]+ Running jedit &
commande fg
La commande fg est comme la commande bg sauf qu'au lieu d'envoyer une commande en arrière-plan, elle les exécute au premier plan et occupe le terminal actuel et attend que le processus se termine.
# jobs
[1]- Stopped makewhatis
[2]+ Stopped vi
Sans aucun argument, fg exécutera la tâche en cours au premier plan (vi dans ce cas).
# fg
vi
Comme la commande s'exécute au premier plan, nous ne récupérons pas le terminal tant que la commande n'est pas terminée. Ainsi, la commande jobs n'affichera désormais qu'un seul travail car vi va maintenant se terminer.
# jobs
[1]+ Stopped makewhatis
# fg %1
makewhatis
# jobs
Aucun emploi restant. Comme bg, %String
et %?String
fonctionne aussi pour fg.
# jobs
[1]- Stopped makewhatis
[2]+ Stopped vi
# fg %v
vi
# fg %?what
makewhatis
Conclusion
Dans ce didacticiel, nous avons appris à contrôler les tâches à l'aide des commandes fg et bg à l'aide de quelques exemples. J'espère que vous avez apprécié et n'hésitez pas à laisser vos suggestions dans la section des commentaires ci-dessous.