GNU/Linux >> Tutoriels Linux >  >> Linux

Comment démarrer la commande Linux en arrière-plan et détacher le processus dans le terminal

Dans ce guide, nous mettrons en lumière un concept simple mais important dans la gestion des processus dans un système Linux, à savoir comment détacher complètement un processus de son terminal de contrôle.

Lorsqu'un processus est associé à un terminal, deux problèmes peuvent survenir :

  1. votre terminal de contrôle est rempli de tant de données de sortie et de messages d'erreur/diagnostic.
  2. dans le cas où le terminal est fermé, le processus ainsi que ses processus enfants seront terminés.

Pour faire face à ces deux problèmes, vous devez totalement détacher un processus d'un terminal de contrôle. Avant de passer à la résolution du problème, expliquons brièvement comment exécuter des processus en arrière-plan.

Comment démarrer un processus ou une commande Linux en arrière-plan

Si un processus est déjà en cours d'exécution, comme l'exemple de commande tar ci-dessous, appuyez simplement sur Ctrl+Z pour l'arrêter, entrez la commande bg pour poursuivre son exécution en arrière-plan en tant que tâche.

Vous pouvez afficher toutes vos tâches d'arrière-plan en tapant jobs . Cependant, son stdin , sortie standard , stderr sont toujours joints au terminal.

$ tar -czf home.tar.gz .
$ bg
$ jobs

Vous pouvez également exécuter un processus directement depuis l'arrière-plan en utilisant l'esperluette, & signe.

$ tar -czf home.tar.gz . &
$ jobs

Jetez un œil à l'exemple ci-dessous, bien que la commande tar ait été lancée en arrière-plan, un message d'erreur a toujours été envoyé au terminal, ce qui signifie que le processus est toujours connecté au terminal de contrôle.

$ tar -czf home.tar.gz . &
$ jobs

Garder les processus Linux en cours d'exécution après avoir quitté le terminal

Nous utiliserons le désaveu commande, elle est utilisée après qu'un processus a été lancé et mis en arrière-plan, son travail consiste à supprimer un travail du shell de la liste active des travaux du shell, donc vous n'utiliserez pas fg , bg commandes sur ce travail particulier.

De plus, lorsque vous fermez le terminal de contrôle, le travail ne se bloque pas ou n'envoie pas de SIGHUP à toutes les tâches enfant.

Lecture suggérée : 5 façons de maintenir les sessions et les processus SSH à distance en cours d'exécution

Jetons un coup d'œil à l'exemple ci-dessous d'utilisation de diswon fonction intégrée bash.

$ sudo rsync Templates/* /var/www/html/files/ &
$ jobs
$ disown  -h  %1
$ jobs

Vous pouvez également utiliser nohup commande, qui permet également à un processus de continuer à s'exécuter en arrière-plan lorsqu'un utilisateur quitte un shell.

$ nohup tar -czf iso.tar.gz Templates/* &
$ jobs

Détacher un processus Linux du terminal de contrôle

Par conséquent, pour détacher complètement un processus d'un terminal de contrôle, utilisez le format de commande ci-dessous, c'est plus efficace pour l'interface utilisateur graphique (GUI ) des applications telles que firefox :

$ firefox </dev/null &>/dev/null &

Sous Linux, /dev/null est un fichier de périphérique spécial qui efface (se débarrasse) de toutes les données écrites dessus, dans la commande ci-dessus, l'entrée est lue et la sortie est envoyée à /dev/null .

Lecture suggérée : 10 exemples de commandes d'écran pour détacher des sessions de terminal

En guise de conclusion, à condition qu'un processus soit connecté à un terminal de contrôle, en tant qu'utilisateur, vous verrez plusieurs lignes de sortie des données de processus ainsi que des messages d'erreur sur votre terminal. Encore une fois, lorsque vous fermez un terminal de contrôle, votre processus et vos processus enfants seront terminés.

Surtout, pour toute question ou remarque sur le sujet, contactez-nous en utilisant le formulaire de commentaire ci-dessous.


Linux
  1. Qu'est-ce qu'une commande Chown sous Linux et comment l'utiliser

  2. Comment gérer les travaux d'arrière-plan Linux avec les commandes fg et bg

  3. Comment trouver et tuer le processus Zombie sous Linux

  4. Comment tuer un processus sous Linux en utilisant la commande ?

  5. Comment démarrer des programmes Linux GUI à partir de la ligne de commande, mais séparément de la ligne de commande ?

Comment localiser et tuer un processus avec un terminal Linux

Comment démarrer et tuer un processus dans Ubuntu 20.04 LTS

Comment travailler avec le processus de premier plan et d'arrière-plan sous Linux

Comment installer et utiliser la commande locate sous Linux

Comment tuer un processus sous Linux

Comment installer et utiliser la commande fd sous Linux