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

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 manipulation des processus dans un système Linux, c'est-à-dire comment détacher complètement un processus à partir de son terminal contrôlant.

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

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

Pour faire face à ces deux problèmes, vous devez détacher totalement un processus à partir d'un terminal contrôlant. Avant de bouger réellement pour résoudre le problème, couvrons 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 exécution, comme l'exemple de commande TAR ci-dessous, appuyez simplement sur Ctrl + z Pour l'arrêter puis entrez la commande bg Pour continuer son exécution en arrière-plan comme travail.

Vous pouvez afficher tous vos travaux d'arrière-plan en tapant emplois. Cependant, c'est stdin, stdout, stderr sont toujours rejoints au terminal.

$ TAR -CZF Home.le goudron.gz . $ bg $ jobs 
Exécuter la commande Linux en arrière-plan

Vous pouvez également exécuter un processus directement à partir de l'arrière-plan en utilisant l'ampersand, & signe.

$ TAR -CZF Home.le goudron.gz . & $ Jobs 
Démarrer le processus Linux en arrière-plan

Jetez un œil à l'exemple ci-dessous, bien que la commande TAR a été lancée comme un travail d'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.le goudron.gz . & $ Jobs 
Processus linux fonctionnant dans un message d'arrière-plan

Gardez les processus Linux en cours d'exécution après la sortie du terminal

Nous utiliserons renier Commande, il est utilisé après le lancement du processus A et mis en arrière FG, bg commandes sur ce travail particulier.

De plus, lorsque vous fermez le terminal de contrôle, le travail ne suspende pas ou n'enverra pas Faire un coup de pouce à tous les emplois d'enfants.

Lire suggérée: 5 façons de maintenir des séances et des processus SSH à distance en cours d'exécution

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

Modèles $ sudo rsync / * / var / www / html / fichiers / & $ jobs $ diry -h% 1 $ jobs 
Gardez le processus Linux en cours après la fermeture du terminal

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

$ nohup tar -czf iso.le goudron.Modèles GZ / * & $ Jobs 
Mettez le processus Linux en arrière-plan après la fermeture de la coque

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

Par conséquent, pour détacher complètement un processus à partir d'un terminal de contrôle, utilisez le format de commande ci-dessous, cela est plus efficace pour l'interface utilisateur graphique (Gui) Applications telles que Firefox:

$ firefox / dev / null & 

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

Lire suggérée: 10 exemples de commande d'écran pour détacher les séances de terminal

Comme remarque finale, à 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 le terminal de contrôle, votre processus et vos processus enfants seront licenciés.

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