Envoyer un processus à l'arrière-plan Linux

Envoyer un processus à l'arrière-plan Linux
Lorsque nous travaillons avec des environnements de bureau graphique, nous nous inquiétons rarement des processus d'arrière-plan. Si nous avons un processus en cours au premier plan, nous pouvons rapidement engendrer une autre fenêtre de terminal et continuer avec notre travail.

Cependant, si vous êtes dans un obus terminal brut comme SSH, vous vous sentirez souvent préoccupé par les processus qui occupent et bloquent la coquille jusqu'à ce qu'ils soient terminés, en particulier sur les emplois de longue date. C'est là que le concept de processus d'arrière-plan et de premier plan entre en jeu.

Ce tutoriel discutera de quels acteurs et des processus de premier plan sont, y compris les créer et les gérer à Linux.

Qu'est-ce qu'un processus?

Permettez-moi de commencer au niveau de base: qu'est-ce qu'un processus?

Dans Linux, un processus est une instance d'un programme. En règle générale, cela signifie que toute commande ou exécutable dans un shell est un processus.

Il existe principalement deux types de processus:

  • Processus de premier plan
  • Processus en arrière-plan

Les processus de premier plan sont principalement des applications typiques que nous lançons et interagissons avec eux. Un exemple serait le gestionnaire de fichiers Nautilus dans Gnome. Dans la plupart des cas, nous pouvons commencer les processus de premier plan à partir de la coquille ou de l'environnement de bureau.

D'un autre côté, les processus d'arrière-plan s'exécutent en arrière-plan et ne nécessitent aucune entrée ni interaction de l'utilisateur. Un exemple serait tout démon linux typique.

Comment exécuter un processus en arrière-plan

Supposons que nous ayons un processus qui, lors de l'exécution, occupe la session de Shell et nous empêche d'exécuter les commandes jusqu'à ce qu'elle quitte.

Par exemple, si nous exécutons le navigateur Firefox dans la coquille, il occupera la session jusqu'à la fin du processus.

$ firefox


Comme vous pouvez le voir, tant que Firefox est en cours d'exécution, l'invite de shell n'est pas disponible et nous ne pouvons plus exécuter les commandes.

Pour résoudre ce problème, nous pouvons le faire de deux manières:

1: Utilisation d'un ampère et)

La première méthode consiste à utiliser l'ampersand & signe. Cela dit au shell d'exécuter la commande précède l'ampère et en arrière-plan.

Un exemple:

Firefox &

Dans un tel scénario, le processus s'exécute en arrière-plan et engendre en tant qu'invite de shell nous permettant de continuer à exécuter des commandes.

Il donne également deux identificateurs numériques. Le premier enfermé entre crochets est l'identifiant du travail, tandis que le suivant est l'ID de processus.

2: Utilisation de Ctrl + Z, commande BG.

La méthode suivante que vous pouvez utiliser pour mettre un processus en arrière-plan consiste à utiliser le raccourci Ctrl + Z. Cela empêche le processus de bloquer la coque. Vous pouvez ensuite utiliser la commande BG pour le pousser sur l'arrière-plan.

Par exemple, commencez par lancer Firefox comme:

$ Firefox

Pendant que le processus est en cours d'exécution, appuyez sur Ctrl + Z. Cela renvoie votre invite de coquille. Enfin, entrez la commande BG pour pousser le processus en arrière-plan.

Comment montrer les processus d'arrière-plan

Pour afficher et gérer les processus en arrière-plan, utilisez la commande Jobs dans le shell. Cela montrera les travaux d'arrière-plan dans la session de terminal actuelle.

Par exemple:

$ Jobs

Un exemple de sortie des travaux d'arrière-plan:

Pour apporter un processus en cours d'exécution au premier plan, utilisez la commande FG suivie de l'ID de travail.

Par exemple, pour apporter le travail Firefox au premier plan, nous utilisons la commande:

$ fg% 1

Pour remettre en arrière-plan, appuyez sur Ctrl + Z suivi de la commande BG.

Comment rendre un processus persistant après la mort de la coquille

Lorsque vous exécutez des processus en arrière-plan et que votre session Shell décède, tous les processus qui y sont associés se terminent, ce qui peut être problématique, surtout s'il s'agit d'une session SSH.

Cependant, ce n'est pas un problème trop important si vous utilisez un multiplexeur terminal tel que TMUX ou Screen, car, dans ce cas, vous pouvez simplement rattacher la session.

Cependant, si vous exécutez une session Shell sans multiplexeur, vous pouvez utiliser la commande noHup.

La commande noHup est immunisée contre les raccrochés et peut ignorer le signal de sighup envoyé à un processus.

Par conséquent, si vous exécutez une commande avec NoHup, il continue d'exécuter même si la session Shell décède accidentellement.

Par exemple, pour exécuter Firefox avec NoHup, utilisez la commande:

Nohup Firefox &

Cela exécutera le processus en arrière-plan comme persiste un shell se terminer.

Vous pouvez exécuter une nouvelle session de terminal et afficher les travaux d'arrière-plan. Vous verrez le processus toujours en arrière-plan.

Conclusion

Dans ce tutoriel, nous avons discuté de diverses façons d'exécuter et d'envoyer des processus à l'arrière-plan de Linux. Nous avons également couvert comment apporter un processus de fond à l'arrière-plan et persister à la fin de la fin de la coquille.