2.1 KiB
& — lancer un processus en arrière-plan
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.