En bash, le caractère & placé à la fin d’une commande lance le processus correspondant en arrière-plan : le shell rend immédiatement la main, sans attendre que la commande se termine. C’est pratique pour démarrer un programme long ou interactif tout en continuant à utiliser le même terminal.
Exemple de base
firefox &
Cette commande démarre Firefox en arrière-plan. Le shell affiche le numéro de tâche (job) et le PID du processus, puis vous rend la main aussitôt.
Attention : par défaut, un processus lancé avec & reste rattaché au terminal. Si vous fermez celui-ci, le shell envoie généralement un signal SIGHUP qui termine le processus. Pour qu’un programme survive à la fermeture du terminal, utilisez nohup, disown, ou un multiplexeur comme tmux ou screen.
Pour éviter que la sortie du programme ne pollue votre terminal, redirigez-la :
mon_script.sh > sortie.log 2>&1 &
Gérer les processus en arrière-plan
Bash fournit quelques commandes essentielles pour manipuler les jobs. Toutes acceptent un identifiant de tâche préfixé par % (par exemple %2 pour la tâche n° 2) :
jobs— liste les processus en arrière-plan du shell courant, avec leur numéro de tâche et leur état (running, stopped…).fg %n— ramène la tâchenau premier plan (foreground).bg %n— relance en arrière-plan une tâche précédemment suspendue.kill %n— envoie un signal (par défautSIGTERM) à la tâchenpour l’arrêter.
Cycle de vie typique d’un job
Un enchaînement courant illustre bien ces commandes :
$ long_script.sh # démarrage au premier plan
^Z # Ctrl+Z : suspend le processus
$ bg # relance en arrière-plan
$ jobs # vérifie l'état
[1]+ Running long_script.sh &
$ fg %1 # ramène au premier plan si besoin
Avec ces quelques primitives, vous pouvez jongler entre plusieurs tâches dans une même session shell sans ouvrir de nouveau terminal.
Commentaires
Aucun commentaire pour l'instant. Soyez le premier !
Laisser un commentaire