Comment exécuter la commande en arrière-plan sur Linux

Comment exécuter la commande en arrière-plan sur Linux

Les commandes ou processus en cours d'exécution sur un système Linux devient une tâche courante si vous devez libérer votre terminal ou vous déconnecter d'une session SSH. Cela est particulièrement vrai pour les commandes qui fonctionnent pendant longtemps, soit pour écouter des événements, soit terminer leur longue tâche.

Nous avons quelques options sur Linux pour exécuter les commandes en arrière-plan. Dans ce guide, nous couvrirons quelques méthodes différentes et vous montrerons comment les utiliser à travers des exemples.

Dans ce tutoriel, vous apprendrez:

  • Comment mettre une commande en cours d'exécution en arrière-plan
  • Comment démarrer une commande en arrière-plan
  • Comment fermer le terminal et maintenir le travail de fond en marche
  • Comment utiliser la commande d'écran
Mettre un processus en arrière-plan et le déplacer vers le premier plan Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Toute distribution Linux
Logiciel Utilitaires Linux par défaut, écran
Autre Accès privilégié à votre système Linux en tant que racine ou via le Sudo commande.
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Mettez une commande en cours d'exécution en arrière-plan

Lorsque vous exécutez une commande qui veut continuer à fonctionner pendant longtemps, le problème est que votre terminal actuel est dédié à la commande. Vous ne pouvez pas continuer à utiliser le terminal, et vous ne pouvez pas non plus le fermer, car cela mettra fin à la commande qui est actuellement en cours d'exécution.

Si vous avez une commande en cours d'exécution et que vous devez la mettre en arrière-plan pour libérer votre terminal, vous pouvez appuyer sur Ctrl + z sur votre clavier pour arrêter le processus. Voici un exemple.

$ sleep 10000 ^ z [1] + arrêt de sommeil 10000 

Pour voir une liste de travaux en arrière-plan, utilisez le emplois commande.

$ Jobs -l [1] + 1650 arrêts de sommeil 10000 


Pour ramener un travail au premier plan, nous pouvons utiliser le FG commande.

$ fg 

Si nous avions plusieurs travaux arrêtés, nous aurions besoin d'utiliser un pourcentage de panneau et de spécifier l'ID du travail pour ramener celui approprié au premier plan.

$ fg% 1 

Super, maintenant nous pouvons mettre des processus en arrière-plan et les ramener quand nous les voulons plus tard. Mais que se passe-t-il si nous voulons que la commande continue de s'exécuter pendant qu'elle est en arrière-plan? Pour cela, nous pouvons utiliser le bg Commande, suivie d'un ampère et de l'ID de travail. La commande suivante fera notre CV de travail arrêté, tout en le gardant en arrière-plan.

$ bg% 1 [1] + sommeil 10000 & 

Maintenant, nous pouvons voir que le processus est toujours en arrière-plan, mais il montre un statut de «fonctionnement» au lieu de «arrêté."

$ Jobs -l [1] + 1650 Running Sleep 10000 & 

Il y a encore une chose à garder à l'esprit. Vous ne pouvez pas fermer votre terminal actuel, ou ces travaux de fond fermeront. Si vous avez besoin de fermer votre terminal et que vous ne voulez pas que ces commandes s'arrêtent, vous devez «renier» le (s) travail (s). Si vous n'avez qu'un seul travail en arrière-plan, la commande suivante fonctionnera:

$ Diet 

Si vous avez plusieurs, alors vous devrez spécifier l'ID de travail.

$ Diet% 1 

Vous ne verrez plus le travail dans votre table de travail lorsque vous exécutez le emplois commande. Maintenant, il est sûr de fermer le terminal et votre commande continuera de fonctionner.

$ Jobs -l 

Vous pouvez toujours garder un œil sur votre commande en cours d'exécution en utilisant la commande ps.

$ ps Aux | Grep Sleep Linuxco + 1650 0.0 0.0 8084 524 PTS / 0 S 12:27 0:00 Sleep 10000 

Et si vous souhaitez empêcher la commande de s'exécuter, vous pouvez utiliser la commande kill et spécifier l'ID de processus.

$ tuer 1650 

Démarrez une commande en arrière-plan

Maintenant, nous avons vu comment mettre un processus en cours d'exécution dans l'arrière-plan et le rappeler plus tard. Mais nous avons également la possibilité de démarrer la commande en arrière-plan au début. Tout ce que vous avez à faire est de mettre un ampère et.

$ sleep 10000 & [1] 1900 


Tout comme avant, nous pouvons voir l'emploi répertorié avec le emplois commande. Cette fois, cependant, le travail est déjà en cours d'exécution et nous n'avons pas eu à le démarrer manuellement en arrière-plan.

$ Jobs -l [1] + 1900 Running Sleep 10000 & 

Fermer le terminal et garder le travail de fond en marche

Nous avons déjà vu dans un exemple précédent comment nous pouvons utiliser le renier commande pour s'assurer que la commande continue en cours d'exécution après la fermeture de notre terminal. Une autre option est la nohup commande.

NoHup dit un processus pour ignorer tout Faire un coup de pouce (Hangup) signale qu'il reçoit. Le signal SIGUP est envoyé à un travail de fond chaque fois que le terminal actuel est fermé. Ainsi, nous pouvons avoir un travail en arrière-plan, fermer le terminal et le voir toujours en arrière-plan. Voici un exemple.

$ nohup sleep 10000 & [1] 1908 noHup: ignorer les entrées et la sortie en ajout.dehors' 

Nous avons fermé le terminal et l'avons rouvert, puis avons exécuté la commande suivante, qui montre que la commande est toujours en cours d'exécution.

$ ps Aux | Grep Sleep Linuxco + 1908 0.0 0.0 8084 524 ? S 13:05 0:00 Sleep 10000 

Utilisation de la commande d'écran

Jusqu'à présent, nous avons couvert les méthodes Linux par défaut pour exécuter les commandes en arrière-plan. Cependant, il existe également des packages logiciels supplémentaires qui peuvent être utilisés. Peut-être que le plus populaire serait la commande d'écran.

Vous pouvez voir le lien susmentionné pour les instructions d'installation et l'utilisation détaillée, mais l'essentiel va comme ceci:

  1. Courir le filtrer commande pour démarrer un nouvel «écran». Éventuellement, incluez le -S Option pour lui donner un nom.
    $ écran -s mycommand 
  2. Dans la nouvelle session d'écran, exécutez la commande ou le script que vous souhaitez mettre en arrière-plan.
    $ / path / to / myscript.shot 
  3. Presse Ctrl + a sur votre clavier, puis D. Cela détachera l'écran, puis vous pouvez fermer le terminal, déconnexion de votre session SSH, etc., et l'écran persistera. Pour voir une liste d'écrans, utilisez cette commande.
    $ Screen -LS Il y a un écran sur: 2741.MyCommand (04/08/2021 01:13:24 PM) (détaché) 1 prise dans / run / écran / s-linuxconfig. 


  4. Pour rattacher un écran, utilisez la commande suivante, en remplaçant le numéro ci-dessous par votre propre ID de processus.
    $ Screen -R 2741 

Réflexions de clôture

Dans ce guide, nous avons vu plusieurs méthodes différentes pour exécuter une commande en arrière-plan sur Linux. Cela comprenait les utilitaires Linux par défaut et la commande d'écran. Nous avons également vu comment gérer le processus d'arrière-plan en déplaçant des emplois au premier plan, en rattacher les écrans et en tuant les processus de fond.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Commandes Linux: les 20 meilleures commandes les plus importantes que vous devez…
  • Comment gérer les événements ACPI sur Linux
  • Commandes Linux de base
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
  • Installez Arch Linux dans VMware Workstation
  • Téléchargement Linux
  • Choses à installer sur Ubuntu 22.04