GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter des commandes Linux en arrière-plan

Généralement, lorsque vous exécutez une commande dans le terminal, vous devez attendre la fin de la commande avant de pouvoir en saisir une autre. Cela s'appelle exécuter la commande dans le processus de premier plan ou de premier plan. Lorsqu'un processus s'exécute au premier plan, il occupe votre shell et vous pouvez interagir avec lui à l'aide des périphériques d'entrée.

Que se passe-t-il si la commande prend beaucoup de temps à se terminer et que vous souhaitez exécuter d'autres commandes entre-temps ? Vous avez plusieurs options à votre disposition. L'option la plus évidente et la plus simple consiste à démarrer une nouvelle session shell et à y exécuter la commande. Une autre option consiste à exécuter la commande en arrière-plan.

Un processus d'arrière-plan est un processus/une commande qui est démarré à partir d'un terminal et s'exécute en arrière-plan, sans interaction de l'utilisateur.

Dans cet article, nous parlerons des processus d'arrière-plan sous Linux. Nous allons vous montrer comment démarrer une commande en arrière-plan et comment maintenir le processus en cours après la fermeture de la session shell.

Exécuter une commande Linux en arrière-plan #

Pour exécuter une commande en arrière-plan, ajoutez le symbole esperluette (& ) à la fin de la commande :

command &

L'ID de tâche shell (entouré de crochets) et l'ID de processus seront imprimés sur le terminal :

[1] 25177

Plusieurs processus peuvent s'exécuter en arrière-plan en même temps.

Le processus d'arrière-plan continuera à écrire des messages sur le terminal à partir duquel vous avez appelé la commande. Pour supprimer la stdout et stderr les messages utilisent la syntaxe suivante :

command > /dev/null 2>&1 & 

>/dev/null 2>&1 signifie rediriger stdout à /dev/null et stderr vers stdout .

Utilisez les jobs utilitaire pour afficher l'état de tous les travaux arrêtés et en arrière-plan dans la session shell en cours :

jobs -l

La sortie inclut le numéro de tâche, l'ID de processus, l'état de la tâche et la commande qui a démarré la tâche :

[1]+ 25177 Running                 ping google.com &

Pour amener un processus d'arrière-plan au premier plan, utilisez le fg commande :

fg

Si vous avez plusieurs tâches en arrière-plan, incluez % et l'ID de la tâche après la commande :

fg %1

Pour terminer le processus en arrière-plan, utilisez le kill commande suivie de l'ID du processus :

kill -9 25177

Déplacer un processus de premier plan vers l'arrière-plan #

Pour déplacer un processus de premier plan en cours d'exécution en arrière-plan :

  1. Arrêtez le processus en tapant Ctrl+Z .
  2. Déplacez le processus arrêté en arrière-plan en tapant bg .

Garder les processus d'arrière-plan en cours d'exécution après la sortie d'un shell #

Si votre connexion est interrompue ou si vous vous déconnectez de la session shell, les processus d'arrière-plan sont arrêtés. Il existe plusieurs façons de maintenir le processus en cours d'exécution après la fin de la session shell interactive.

Une façon consiste à supprimer le travail du contrôle des travaux du shell en utilisant le disown shell intégré :

disown

Si vous avez plusieurs tâches en arrière-plan, incluez % et l'ID de la tâche après la commande :

disown %1

Confirmez que la tâche est supprimée de la table des tâches actives à l'aide de jobs -l commande. Pour lister tous les processus en cours d'exécution, y compris ceux désavoués, utilisez le ps aux commande.

Une autre façon de maintenir un processus en cours d'exécution après la sortie du shell consiste à utiliser nohup .

Le nohup La commande exécute un autre programme spécifié comme argument et ignore tous les SIGHUP (raccrocher). SIGHUP est un signal envoyé à un processus lorsque son terminal de contrôle est fermé.

Pour exécuter une commande en arrière-plan en utilisant le nohup commande, tapez :

nohup command &

La sortie de la commande est redirigée vers le nohup.out fichier.

nohup: ignoring input and appending output to 'nohup.out'

Si vous vous déconnectez ou fermez le terminal, le processus n'est pas terminé.

Alternatives #

Il existe un certain nombre de programmes qui vous permettent d'avoir plusieurs sessions interactives en même temps.

Numéro d'écran

Screenor GNU Screen est un programme multiplexeur de terminaux qui vous permet de démarrer une session screen et d'ouvrir un nombre quelconque de fenêtres (terminaux virtuels) à l'intérieur de cette session. Les processus en cours d'exécution dans Screen continueront de s'exécuter lorsque leur fenêtre n'est pas visible, même si vous êtes déconnecté.

Tmux #

Tmux est une alternative moderne à l'écran GNU. Avec Tmux, vous pouvez également créer une session et ouvrir plusieurs fenêtres à l'intérieur de cette session. Les sessions Tmux sont persistantes, ce qui signifie que les programmes exécutés dans Tmux continuent de s'exécuter même si vous fermez le terminal.

Conclusion #

Pour exécuter une commande en arrière-plan, incluez & à la fin de la commande.

Lorsque vous exécutez une commande en arrière-plan, vous n'avez pas besoin d'attendre qu'elle se termine avant de pouvoir en exécuter une autre.

Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.


Linux
  1. Exécution de commandes Linux en arrière-plan et au premier plan

  2. Commandes Linux de A à Z

  3. Commande d'écho Linux

  4. Comment exécuter un script en arrière-plan (linux openwrt) ?

  5. linux :comment exécuter une commande dans un répertoire donné

Comment rappeler facilement les commandes Linux oubliées

Comment corriger facilement les commandes Bash mal orthographiées sous Linux

Comment vérifier l'historique des commandes Linux par dates

Comment exécuter une commande périodiquement sous Linux à l'aide de Watch

Comment exécuter plusieurs commandes Linux en une seule commande

Comment exécuter plusieurs commandes Linux à la fois dans le terminal Linux