Comment exécuter des programmes en arrière-plan à l’aide du terminal Ubuntu
Comprendre les processus d’arrière-plan sous Ubuntu peut être un peu déroutant au début. Vous avez peut-être exécuté une longue commande, mais vous ne voulez pas attendre qu’elle se termine, ou vous devez exécuter plusieurs tâches simultanément sans perdre le contrôle du terminal. C’est une compétence fondamentale de Linux qui semble magique dès la première utilisation. L’objectif ? Montrer comment démarrer des programmes en arrière-plan, les vérifier et même les maintenir en cours d’exécution après la fermeture du terminal – car, bien sûr, Ubuntu rend la tâche plus complexe que nécessaire.
Une fois ces astuces maîtrisées, votre flux de travail sera beaucoup plus fluide, surtout si vous exécutez les mêmes tâches de manière répétée ou si vous souhaitez que tout fonctionne en arrière-plan sans intervention manuelle. Attendez-vous à voir apparaître ici des commandes telles que &
, jobs
, fg
et, nohup
ainsi que des conseils pratiques basés sur des expériences concrètes.
Comment exécuter et gérer les processus en arrière-plan dans Ubuntu
Exécuter une commande en arrière-plan
Commençons par les bases : si vous souhaitez exécuter une commande, comme milkingsleep ou autre, en arrière-plan, ajoutez simplement un &
à la fin. Voici pourquoi cela fonctionne : le &
indique au shell : « N’attendez pas la fin de l’exécution, exécutez-la et passez à autre chose.»
Par exemple, vous faites quelque chose comme :
sleep 120 &
Cela lancera une commande de mise en veille pendant 2 minutes, mais libérera instantanément votre terminal. Sur certaines configurations, un numéro de tâche et un identifiant de processus peuvent s’afficher, indiquant qu’il est actif et s’exécute en arrière-plan. Le problème est que, sur certaines machines, cette opération échoue parfois la première fois si la session de terminal est trop réactive ou si vous exécutez des scripts ou des sessions distantes. Si cela ne fonctionne pas initialement, réessayez ou vérifiez si votre shell est configuré pour gérer correctement le contrôle des tâches.
Afficher tous les travaux d’arrière-plan en cours d’exécution
Utilisez jobs
-le pour voir ce qui se passe en arrière-plan. Il répertorie toutes les tâches actives lancées depuis ce terminal. Il est parfois difficile de se souvenir de chaque processus, surtout si plusieurs sont en cours d’exécution. C’est pratique pour suivre les opérations sans avoir recours aux commandes ps ou à d’autres outils plus complexes.
jobs
Si le message n’apparaît pas, vous avez peut-être oublié de le démarrer avec &
, ou la session a perdu le fil. De plus, les tâches peuvent être arrêtées ou dans un état étrange ; vérifiez ps aux | grep [your_process]
si nécessaire.
Ramener un processus d’arrière-plan au premier plan
Parfois, vous souhaitez réellement interagir à nouveau avec le processus.fg
est la commande magique qui remet une tâche en état d’exécution. Vous pouvez spécifier le numéro de tâche si vous en avez plusieurs, par exemple fg %1
.
Assurez-vous de connaître le numéro de tâche à utiliser : il s’affiche à côté du processus lors de l’exécution jobs
. C’est très utile si vous avez besoin de consulter le résultat ou d’arrêter le processus prématurément. En pratique, dans certaines configurations, mettre des éléments au premier plan peut être difficile si le shell ne suit pas correctement les tâches. Gardez cela à l’esprit.
Maintenir les processus en cours d’exécution après la fermeture du terminal
C’est parfois l’étape la plus critique. Vous pouvez lancer un processus long, comme une sauvegarde ou un téléchargement, puis fermer le terminal ou vous déconnecter de SSH sans l’interrompre. L’outil idéal est nohup
. Il indique « Ne raccrochez pas » : votre processus s’exécute même si votre session SSH est interrompue ou si vous fermez la fenêtre du terminal.
Exemple de commande :
nohup sleep 3600 &
Cela maintiendra la veille active pendant une heure, même si vous vous déconnectez. Généralement, nohup
la sortie est redirigée vers un fichier nommé nohup.out
par défaut, mais vous pouvez le personnaliser si nécessaire. Attention cependant : si vous ne redirigez pas explicitement la sortie, vous risquez d’avoir beaucoup de journaux dans le répertoire courant. De plus, certaines configurations de shell peuvent interférer ; vérifiez donc si le fonctionnement est correct.
Gérer la production et l’encombrement
Lors de l’exécution de commandes en arrière-plan, les sorties peuvent s’accumuler et encombrer votre terminal ou vos fichiers journaux. Vous pouvez rediriger stdout et stderr vers un fichier, ce qui est généralement plus judicieux, notamment pour les processus de longue durée. Par exemple :
my_command > output.log 2>&1 &
Ceci envoie toutes les sorties et erreurs dans output.log
. Toutes les commandes ne fonctionnent pas correctement en arrière-plan ; surveillez donc les fichiers de sortie et les journaux pour détecter rapidement tout problème. De plus, si vous oubliez &
, votre shell se bloquera, pensant être toujours au premier plan, ce qui est assez frustrant.
Conseils supplémentaires et pièges courants
Il est étrange que le contrôle des tâches ne se comporte pas toujours de manière cohérente selon les configurations ou les shells Linux. Sur certaines machines, les tâches d’arrière-plan peuvent se terminer inopinément si le terminal est fermé, sauf si vous utilisez nohup
. De plus, si le processus envoie directement des données à votre terminal, cela peut perturber votre invite de commande ou masquer d’autres données. Il est presque toujours recommandé de rediriger la sortie.
Conclusion
Gérer les processus d’arrière-plan sous Ubuntu n’est pas sorcier, mais c’est un peu bizarre et parfois peu intuitif. Le principal avantage ? Utilisez &
pour démarrer des tâches en arrière-plan, les vérifier avec jobs
, les relancer avec fg
, et les maintenir actives après la fermeture du terminal avec nohup
. Quelques ajustements ici et là peuvent vraiment fluidifier le multitâche, notamment sur les serveurs distants ou les tâches lourdes.
Questions fréquemment posées
Pourquoi devrais-je exécuter des processus en arrière-plan ?
En gros, vous n’êtes pas bloqué dans l’attente. Vous pouvez lancer une tâche longue et continuer à travailler sur d’autres tâches, ou fermer le terminal si vous l’avez utilisé, nohup
sans craindre qu’il ne s’arrête.
Puis-je voir les tâches en arrière-plan après avoir fermé le terminal ?
Généralement non, sauf si vous utilisez nohup
un multiplexeur de terminal comme tmux ou screen. Sinon, toutes les tâches sont interrompues avec la session.
Quelle est la magie pour tuer un processus d’arrière-plan ?
Vous pouvez trouver son identifiant de processus avec ps
ou le tuer directement avec kill
. Attention : tuer avec -9
doit être une solution de dernier recours, car cela force l’arrêt du processus.