GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter une commande / un script Linux Shell en arrière-plan

Le style habituel d'exécution d'une commande sur un terminal Linux consiste simplement à l'exécuter et à attendre qu'elle se termine correctement. Une fois la commande terminée, vous pouvez alors procéder à l'exécution successive d'autres commandes. C'est ce qu'on appelle l'exécution de commandes au premier plan. Comme le mot l'indique, vous pouvez voir visuellement la sortie de la commande sur le terminal.

Parfois, cependant, l'exécution de commandes au premier plan peut présenter un ensemble de défis. La commande peut prendre trop de temps à se terminer, ce qui vous fait perdre un temps précieux et d'autres fois, elle peut être totalement attachée à la session shell, vous laissant bloqué.

Dans de tels cas, l'exécution d'une commande en arrière-plan est votre meilleur pari. Vous pouvez envoyer une ou plusieurs commandes en arrière-plan lorsque vous exécutez simultanément d'autres commandes au premier plan. Cela améliore l'efficacité du travail sur le terminal et vous fait gagner du temps.

Dans ce guide, nous nous concentrons sur la façon dont vous pouvez exécuter une commande ou un script shell Linux en arrière-plan.

Exécution de la commande shell en arrière-plan à l'aide du signe (&) 

Pour exécuter une commande ou un script en arrière-plan, terminez-le par une esperluette (&) à la fin, comme indiqué.

$ commande &

REMARQUE :terminer la commande par le signe esperluette ne vous détache pas la commande. Il l'envoie simplement à l'arrière-plan du shell actuel que vous utilisez, la commande imprimera toujours la sortie sur STDOUT ou STDERR, ce qui vous empêchera d'exécuter d'autres commandes sur le terminal.

Une meilleure approche consiste à rediriger la commande vers /dev/null, puis à ajouter le signe esperluette à la fin, comme indiqué

$ commande &>/dev/null &

Pour confirmer que la commande a été envoyée en arrière-plan, exécutez la commande jobs.

Pour terminer le processus en arrière-plan, exécutez la commande kill suivie du PID du processus comme suit. L'option -9 termine le processus immédiatement.

$ kill -9 138314

Exécution d'une commande shell ou d'un script en arrière-plan à l'aide de la commande nohup

Une autre façon d'exécuter une commande en arrière-plan consiste à utiliser la commande nohup. La commande nohup, abréviation de no hang up, est une commande qui maintient un processus en cours d'exécution même après avoir quitté le shell.

Pour ce faire, il empêche les processus de recevoir un signal SIGHUP (Signal Hang UP) qui est un signal généralement envoyé à un processus lorsqu'il quitte le terminal.

Pour envoyer une commande ou un script en arrière-plan et le faire fonctionner, utilisez la syntaxe :

$ commande nohup &>/dev/null &

$ nohup shell-script.sh &>/dev/null &

Par exemple,

$ nohup ping google.com &>/dev/null &

Encore une fois, vous pouvez vérifier que la commande s'exécute en arrière-plan à l'aide de la commande :

$ jobs

Conclusion

Dans ce guide, nous avons couvert deux manières d'exécuter des commandes ou des scripts shell en arrière-plan. Nous avons vu comment vous pouvez exécuter des commandes en arrière-plan en utilisant le signe &et la commande nohup.

Lire aussi  :Commande Linux Zip et Unzip avec exemples


Linux
  1. Comment utiliser les alias du shell sous Linux

  2. Comment exécutez-vous un script lors de la connexion dans * nix ?

  3. Comment stocker une commande dans une variable dans un script shell ?

  4. Comment exécuter un script shell au démarrage

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

Comment stocker une commande Linux en tant que variable dans un script shell

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

Comment utiliser la commande Declare dans Linux Bash Shell

Comment exécuter un script Shell en tant que service SystemD sous Linux

Comment exécuter une commande dans un script shell ?

Comment créer et exécuter un script shell dans Ubuntu 22.04