draft: &
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"title": "`&` — lancer un processus en arrière-plan",
|
||||||
|
"_updated_at": "2026-05-16 16:05:15"
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
# `&` — 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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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 :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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âche `n` au premier plan (*foreground*).
|
||||||
|
- **`bg %n`** — relance en arrière-plan une tâche précédemment suspendue.
|
||||||
|
- **`kill %n`** — envoie un signal (par défaut `SIGTERM`) à la tâche `n` pour l'arrêter.
|
||||||
|
|
||||||
|
## Cycle de vie typique d'un job
|
||||||
|
|
||||||
|
Un enchaînement courant illustre bien ces commandes :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ 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.
|
||||||
Reference in New Issue
Block a user