Comment exécuter la commande en arrière-plan sur Linux
- 4224
- 261
- Lucas Bernard
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
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:
- Courir le
filtrer
commande pour démarrer un nouvel «écran». Éventuellement, incluez le-S
Option pour lui donner un nom.$ écran -s mycommand
- 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
- Presse
Ctrl + a
sur votre clavier, puisD
. 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.
- 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
- « Enregistrez vos mots de passe sur la ligne de commande avec Gopass (avec les plugins du navigateur!)
- Comment configurer le serveur et le client FTP / SFTP sur Almalinux »