Conditions préalables:
Pour effectuer les étapes de ce guide, vous avez besoin des composants suivants:
Exécuter les processus à partir du terminal
Chaque fois que l'exécution d'une commande, les processus sont engendrés sous le terminal. Si le terminal est fermé, tous les processus associés sont automatiquement résiliés. Dans certaines situations, cela peut être gênant. Par exemple:
Pour résoudre ces problèmes, il existe quelques options:
Les processus qui s'exécutent en arrière-plan ne submergeront pas la sortie terminale. De plus, le terminal est libre d'exécuter les commandes supplémentaires. Pour les processus détachés, ils ne se termineront pas même si le terminal est fermé.
Démarrer les processus en arrière-plan
Dans de nombreux cas, une commande peut prendre un certain temps pour terminer. Généralement, l'utilisateur est obligé d'attendre jusqu'à la fin de la commande. Par exemple, lorsque vous utilisez un éditeur de texte, le shell n'est pas disponible jusqu'à ce que l'éditeur soit fermé.
Pour démontrer, nous utilisons la commande «oui»:
$ man oui
Méthode 1:
Il y a quelques façons où nous pouvons envoyer le processus en cours d'exécution à l'arrière-plan.
Premièrement, nous arrêtons le processus sans le terminer. Pour ce faire, exécutez la commande suivante et appuyez sur «Ctrl + Z»:
$ Oui "Hello World"> / dev / null
Maintenant, exécutez la commande «BG» pour envoyer le processus en arrière-plan:
$ bg
Une fois poussé en arrière-plan, le processus reprend. La commande suivante répertorie tous les travaux en cours d'exécution:
$ Jobs
Méthode 2:
Dans la méthode précédente, le processus a commencé à fonctionner au premier plan. Nous avons arrêté le processus, l'avons envoyé à l'arrière-plan, puis nous l'avons repris. Au lieu de cela, nous pouvons exécuter le processus directement en arrière-plan.
Pour ce faire, ajoutez le signe «&» à la fin de la commande:
$ oui "Oh long Johnson"> / dev / null &
Ici, les processus engendrés s'exécutent automatiquement en arrière-plan. Pour vérifier, vérifiez la liste des travaux d'arrière-plan:
$ Jobs
Méthode 3:
Nous pouvons également lancer les processus en arrière-plan à l'aide de TMUX, un puissant multiplexeur qui peut gérer plusieurs séances de terminal dans une seule fenêtre. Il ne vient pas préinstallé dans Linux. Cependant, il est disponible pour toutes les principales distros Linux. En savoir plus sur l'installation de TMux sur Linux.
Dans l'exemple suivant, nous utilisons TMUX pour cingler une cible et enregistrer la sortie:
$ tmux new -d 'ping -c 9 127.0.0.1> ping.enregistrer'
Le fichier journal vérifie si la commande s'exécute avec succès ou non:
$ cat ping.enregistrer
Ce n'est qu'un exemple de ce que TMUX peut faire. En savoir plus sur TMUX avec des exemples.
Retourner les emplois au premier plan
Si vous souhaitez retourner un emploi au premier plan, nous utilisons la commande «FG». Nous avons également besoin du numéro de travail de la commande Jobs.
Tout d'abord, déterminez le travail que vous souhaitez apporter au premier plan:
$ Jobs
Maintenant, utilisez la commande «FG»:
$ fg%
Détacher les processus du terminal
Tout processus associé à un terminal est terminé une fois le terminal se ferme, qu'il fonctionne au premier plan ou en arrière-plan. Pour éviter la terminaison du processus, nous dissocons le processus cible à partir du terminal / coquille.
Méthode 1:
Pour renier un processus, nous avons d'abord besoin d'un processus de fond:
$ oui "qwerty"> / dev / null &
Vérifiez la liste des travaux d'exécution des antécédents:
$ Jobs
Notez le numéro de série du travail d'arrière-plan cible. Maintenant, utilisez la commande «Diet» pour le détacher du terminal:
$ Diet%
Le travail cible devrait désormais disparaître de la liste des emplois:
$ Jobs
Cependant, vous pouvez toujours voir le processus s'exécuter en arrière-plan:
$ ps aux
Méthode 2:
Une autre façon de détacher un processus du terminal parent est d'utiliser la commande «noHup». Il maintient un processus en marche en arrière-plan même après la fermeture du terminal.
L'utilisation de «Nohup» est la suivante:
$ nohup&
Vérifiez si le travail est créé avec succès:
$ Jobs
Méthode 3:
Cette méthode détache complètement le processus cible. C'est un moyen plus efficace de détacher les applications GUI.
Par exemple, pour démarrer le Firefox et le détacher complètement du terminal, utilisez la commande suivante:
$ firefox / dev / null &
Ici:
Conclusion
Nous avons démontré les différentes façons d'exécuter un processus en arrière-plan. Nous avons également présenté les moyens de détacher un processus du terminal parent. Ces techniques peuvent être utiles chaque fois que vous travaillez avec le terminal ou l'exécution d'un script.
Si vous devez exécuter certaines commandes dans un modèle spécifique, nous pouvons le décharger en tant que service SystemD. Pour les machines distantes, nous pouvons également utiliser les outils tiers comme ANSIBLE pour automatiser presque tout.
Happy Computing!