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

Il n’y a rien de plus ennuyeux que d’exécuter une commande dans votre terminal et de la voir s’exécuter pendant des minutes, parfois des heures, sans pouvoir utiliser à nouveau votre terminal. Bien sûr, vous pouvez utiliser des onglets, mais c’est une solution peu pratique, et ce n’est pas toujours optimal car vous pouvez vouloir voir les mises à jour pendant que vous travaillez. Ici, nous vous montrons quelques façons différentes d’exécuter des commandes bash en arrière-plan sous Linux.
Lisez aussi : Comment utiliser la commande lsof sous Linux pour lister les fichiers ouverts
Terminer une commande avec &
Si vous souhaitez envoyer une commande en arrière-plan, utiliser & à la fin est un moyen facile de le faire. De cette façon, vous pouvez émettre une commande en arrière-plan et continuer à utiliser votre terminal pendant son exécution. Cela a cependant un inconvénient. Utiliser & ne déconnecte pas la commande de vous ; cela la pousse simplement en arrière-plan. Cela signifie que pendant que vous essayez d’utiliser le terminal, tout ce que la commande veut envoyer à STDOUT ou STDERR sera toujours imprimé, ce qui peut être distrayant.

COMMAND &Lorsque la session du terminal est fermée, la commande se termine. Vous pouvez également tuer la commande en émettant la commande jobs, en trouvant le numéro de la commande qui s’exécute, et en la tuant avec la commande kill. Cette syntaxe est la suivante :

kill %1Utiliser & est bon si vous devez envoyer quelque chose de côté pendant un moment mais ne vous attendez pas à ce que cela continue indéfiniment.
Lisez aussi : Comment utiliser la commande dd sous Linux
& après une commande, puis la désassocier
Exécuter une commande avec juste & l’envoie à l’arrière et la garde en cours d’exécution tant que la fenêtre du terminal est ouverte. Si, cependant, vous souhaitez que cette commande continue à s’exécuter de manière constante, même avec la fin de votre session terminal, vous pouvez utiliser la commande disown.
Pour utiliser cette méthode, commencez par ajouter un &.
COMMAND &Comme mentionné ci-dessus, utiliser & pousse cette commande en arrière-plan mais ne la détache pas de votre utilisateur. Vous pouvez vérifier cela en tapant jobs dans le terminal. Cela montrera la commande s’exécutant en arrière-plan comme nous l’avons vu auparavant.
Il suffit de taper disown dans le shell, et cela fera exactement cela. (Et vous pouvez à nouveau vérifier cela avec la commande jobs.)

Maintenant, vous pouvez fermer votre terminal et continuer votre journée. Cela continuera à envoyer des choses à STDOUT ou STDERR, mais une fois que vous quittez et rouvrez votre terminal, vous ne verrez rien là-dedans. Vous pouvez retrouver la commande avec les commandes top ou ps et la tuer avec la commande kill.

Lisez aussi : Comment utiliser la commande Rm sous Linux
& après une commande avec /dev/null
Ajouter & après une commande poussera une commande en arrière-plan, mais en conséquence, la commande en arrière-plan continuera à imprimer des messages dans le terminal pendant que vous l’utilisez. Si vous souhaitez éviter cela, envisagez de rediriger la commande vers /dev/null.

COMMAND &>/dev/null &Cela n’empêche pas la commande de se fermer lorsque le terminal se ferme. Cependant, comme mentionné ci-dessus, il est possible d’utiliser disown pour dissocier la commande en cours d’exécution de l’utilisateur. Vous pouvez également la tuer avec l’une des méthodes mentionnées ci-dessus si vous ne voulez plus qu’elle s’exécute.
Lisez aussi : Le guide ultime des commandes Apt et Apt-Get
Nohup, avec & et /dev/null
Contrairement aux commandes précédentes, utiliser nohup vous permet d’exécuter une commande en arrière-plan et de la garder en cours d’exécution. Comment ? nohup contourne le signal HUP (signal de déconnexion), rendant possible l’exécution de commandes en arrière-plan même lorsque le terminal est éteint. Combinez cette commande avec la redirection vers “/dev/null” (pour empêcher nohup de créer un fichier nohup.out), et tout va en arrière-plan avec une seule commande.
nohup COMMAND &>/dev/null &
Lisez aussi : Comment générer des certificats SSL sur Linux en utilisant OpenSSL
La plupart des programmes de terminal sous Linux aujourd’hui ont des fonctionnalités intégrées pour leur permettre de s’exécuter en arrière-plan avec peu d’effort. De plus, les systèmes d’initialisation modernes (comme systemd) peuvent permettre aux utilisateurs de démarrer des programmes comme des services au démarrage ou à tout moment.
Cependant, certains programmes sous Linux manquent de la capacité à s’exécuter en tant que démon ou à s’intégrer avec des systèmes d’initialisation modernes. C’est un réel inconvénient mais compréhensible, car tous les développeurs n’ont pas les compétences ou le temps d’ajouter de nouvelles fonctionnalités.
Heureusement, des commandes comme nohup ou disown sont toujours une réalité et peuvent combler le fossé pour déplacer des programmes comme celui-ci en arrière-plan. Elles ne sont pas parfaites ou élégantes, mais elles font le travail quand c’est nécessaire.
Si vous avez apprécié cet article sur Linux, assurez-vous de consulter certains de nos autres contenus Linux, comme comment connecter votre compte Google à GNOME Shell, les meilleures distributions Linux pour les utilisateurs de Windows, et les commandes LS que vous devez connaître.
Lisez aussi : Comment utiliser cURL pour le transfert de données en ligne de commande et plus encore