🎯 Ce que tu sauras à la fin
Processus
PID, parent, états : la carte d'identité de tout programme.
Surveiller
ps, top, htop et la charge du système.
Signaux
Arrêter proprement ou de force avec kill.
Tâches
Arrière-plan, pause, nohup, tmux et priorités.
Qu'est-ce qu'un processus ?
Un programme est un fichier sur le disque (/usr/bin/ls). Un processus, c'est ce programme en cours d'exécution,
avec sa mémoire, ses fichiers ouverts et son propriétaire. Le même programme peut tourner en plusieurs processus à la fois : chaque onglet de
navigateur, chaque terminal ouvert.
| Attribut | Signification |
|---|---|
| PID | Numéro unique du processus (Process ID) |
| PPID | PID de son parent : le processus qui l'a lancé |
| UID | L'utilisateur propriétaire : le processus a ses droits, ni plus ni moins |
| État | En cours, endormi, arrêté, zombie… (voir plus bas) |
| Priorité | Sa part de temps processeur (valeur nice) |
Un arbre généalogique
Au démarrage, le noyau lance un seul processus, le n°1 : systemd. Tous les autres en descendent. La commande pstree le montre :
user@ubuntu:~$ pstree -p | head -6 systemd(1)─┬─ModemManager(845)─┬─{ModemManager}(860) ├─NetworkManager(812)─┬─{NetworkManager}(851) ├─cron(799) ├─gdm3(1021)───gdm-session-wor(1340)───gdm-wayland-ses(1405)───gnome-session-b(1411) ... user@ubuntu:~$ echo $$ # le PID de ton shell actuel 4127
Lister les processus : ps
user@ubuntu:~$ ps # seulement ceux du terminal courant PID TTY TIME CMD 4127 pts/0 00:00:00 bash 4310 pts/0 00:00:00 ps user@ubuntu:~$ ps aux | head -4 # tous les processus du système USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 23280 13940 ? Ss 09:12 0:02 /sbin/init splash root 2 0.0 0.0 0 0 ? S 09:12 0:00 [kthreadd] user 2215 4.1 9.8 3912640 402116 ? Sl 09:14 1:55 /snap/firefox/.../firefox
| Colonne | Signification |
|---|---|
%CPU / %MEM | Part du processeur et de la mémoire utilisée |
RSS | Mémoire réellement occupée en RAM (en Kio) |
TTY | Le terminal rattaché (? = aucun : un service) |
STAT | État : R en cours, S endormi (attend), D attente disque, T arrêté, Z zombie |
COMMAND | La commande complète ; entre crochets, un fil du noyau |
user@ubuntu:~$ ps -eo pid,ppid,user,%mem,cmd --sort=-%mem | head -5 # les 4 plus gourmands en mémoire user@ubuntu:~$ pgrep -a firefox # PID d'un programme par son nom 2215 /snap/firefox/.../firefox
Sur Ubuntu, /sbin/init (PID 1) est un lien vers systemd. Le dossier /proc/PID/ contient tout ce que le noyau sait d'un processus :
essaie cat /proc/$$/status.
Surveiller en direct : top et htop
top - 10:42:11 up 1:30, 1 user, load average: 0,42, 0,35, 0,30 Tâches: 231 total, 1 en cours, 230 en veille, 0 arrêté, 0 zombie %Cpu(s): 3,1 ut, 1,0 sy, 0,0 ni, 95,7 id, 0,1 wa MiB Mém : 3915,2 total, 812,4 libr, 1730,6 util, 1372,2 tamp/cache PID UTIL. PR NI VIRT RES SHR S %CPU %MEM TEMPS+ COM. 2215 user 20 0 3912640 402116 151872 S 4,3 9,8 1:55.41 firefox 1405 user 20 0 4733480 289660 129408 S 1,7 7,1 0:48.12 gnome-shell
Touche dans top | Action |
|---|---|
| P / M | Trier par processeur / par mémoire |
| k | Envoyer un signal à un processus (demande son PID) |
| 1 | Détailler chaque cœur du processeur |
| u | Filtrer par utilisateur |
| q | Quitter |
Les trois nombres sont le nombre moyen de processus qui veulent le processeur, sur 1, 5 et 15 minutes. Compare-les au nombre de cœurs
(nproc) : sur 2 cœurs, une charge de 2 signifie « occupé à 100 % » ; au-delà, des processus font la queue. La tendance compte aussi :
si le premier nombre est bien plus haut que le dernier, la charge est en train de monter.
htop (sudo apt install htop) fait la même chose en plus lisible : barres colorées par cœur, défilement, recherche avec F3,
arbre des processus avec F5, envoi de signaux avec F9, et même la souris.
Arrêter un processus : les signaux
Un signal est un court message envoyé à un processus. Le processus peut le traiter à sa façon… sauf deux, que le noyau applique de force.
| Signal | N° | Signification | Déclenché par |
|---|---|---|---|
SIGHUP | 1 | Le terminal a été fermé ; beaucoup de services y relisent leur configuration | fermeture du terminal |
SIGINT | 2 | Interruption demandée par l'utilisateur | Ctrl + C |
SIGKILL | 9 | Arrêt immédiat, impossible à ignorer | kill -9 |
SIGTERM | 15 | Demande polie de se terminer (par défaut) | kill |
SIGCONT | 18 | Reprendre après une pause | fg, bg |
SIGSTOP | 19 | Pause forcée, impossible à ignorer | kill -STOP |
SIGTSTP | 20 | Pause demandée depuis le terminal | Ctrl + Z |
user@ubuntu:~$ sleep 600 & # un processus de test, en arrière-plan [1] 4521 user@ubuntu:~$ kill 4521 # SIGTERM : « termine, s'il te plaît » [1]+ Complété sleep 600 user@ubuntu:~$ kill -9 4600 # SIGKILL : en dernier recours seulement user@ubuntu:~$ pkill firefox # par nom (motif) user@ubuntu:~$ killall sleep # par nom exact, tous les processus user@ubuntu:~$ kill -l # la liste de tous les signaux
kill (SIGTERM) laisse au programme le temps d'enregistrer, de fermer ses fichiers, de supprimer ses fichiers temporaires.
kill -9 le coupe net : risque de fichiers corrompus ou de verrous qui traînent. Attends quelques secondes après un kill avant de passer au -9.
Un utilisateur ne peut envoyer de signaux qu'à ses processus. Ceux de root ou d'un service demandent sudo. Et pour un service système,
on préfère sudo systemctl restart nom (module 10) à un kill.
Premier plan, arrière-plan et pause
| Commande | Effet |
|---|---|
commande & | Lance en arrière-plan : le terminal reste disponible |
| Ctrl + Z | Met en pause la commande au premier plan |
jobs | Liste les tâches du terminal (numérotées %1, %2…) |
fg %1 | Ramène la tâche 1 au premier plan |
bg %1 | Relance la tâche 1 en pause, en arrière-plan |
kill %1 | Envoie SIGTERM à la tâche 1 |
user@ubuntu:~$ nano notes.txt # Ctrl+Z pendant l'édition [1]+ Stoppé nano notes.txt user@ubuntu:~$ sleep 300 & [2] 4702 user@ubuntu:~$ jobs [1]+ Stoppé nano notes.txt [2]- En cours d'exécution sleep 300 & user@ubuntu:~$ fg %1 # retour dans nano, là où on l'avait laissé
Survivre à la fermeture du terminal : nohup et tmux
Quand un terminal se ferme (ou qu'une connexion SSH tombe), ses processus reçoivent SIGHUP et s'arrêtent. Deux parades :
user@ubuntu:~$ nohup ./sauvegarde.sh & # ignore SIGHUP ; la sortie va dans nohup.out user@ubuntu:~$ sudo apt install tmux user@ubuntu:~$ tmux new -s travail # ouvre une session tmux nommée « travail » # … lancer une longue tâche, puis Ctrl+B suivi de D pour se détacher user@ubuntu:~$ tmux ls travail: 1 windows (created Sat Oct 24 10:58:12 2026) user@ubuntu:~$ tmux attach -t travail # on retrouve tout, même depuis une autre connexion
tmux fait bien plus : diviser le terminal en panneaux (Ctrl + B puis % ou "), plusieurs fenêtres… C'est l'outil indispensable dès qu'on travaille sur un serveur distant (module 13).
Les priorités : nice et renice
La valeur nice va de -20 (prioritaire) à 19 (très « gentil », laisse passer les autres). Par défaut : 0.
Un utilisateur peut rendre ses processus plus gentils ; seul root peut les rendre plus prioritaires.
user@ubuntu:~$ nice -n 15 tar czf sauvegarde.tar.gz ~/Documents # compression en tâche de fond, discrète user@ubuntu:~$ renice -n 10 -p 2215 # changer la priorité d'un processus existant 2215 (process ID) old priority 0, new priority 10
Glossaire du module
- Processus
- Programme en cours d'exécution.
- PID / PPID
- Numéro du processus / de son parent.
- systemd
- Le processus n°1, ancêtre de tous les autres.
- ps / top / htop
- Lister / surveiller en direct les processus.
- Charge moyenne
- Nombre moyen de processus en attente de processeur, sur 1, 5 et 15 min.
- Signal
- Message envoyé à un processus (SIGTERM, SIGKILL…).
- kill / pkill / killall
- Envoyer un signal par PID / par motif / par nom.
- Premier plan / arrière-plan
- Tâche qui occupe le terminal / qui tourne sans le bloquer (
&). - jobs / fg / bg
- Lister / ramener / relancer les tâches du terminal.
- nohup / tmux
- Faire survivre une tâche à la fermeture du terminal.
- nice
- Priorité d'un processus, de -20 à 19.
- Zombie
- Processus terminé dont le parent n'a pas encore lu le code de retour.
🧠 Quiz : as-tu tout retenu ?
ps seul ne montre que le terminal courant ; jobs, les tâches du terminal.kill 1234 par défaut ?-9.kill -9 en premier réflexe ?bg le relancerait en arrière-plan.4,0. Cela signifie…& ne protège pas du SIGHUP envoyé à la fermeture du terminal.🚀 Mission pratique
À faire dans la machine virtuelle
Coche chaque étape une fois faite : sa correction s'affiche juste en dessous.
- ✅ Correction
$ echo $$ 4127 $ ps -o pid,ppid,cmd -p $$ PID PPID CMD 4127 4119 bash $ pstree -s -p $$ systemd(1)───systemd(1290)───gnome-terminal-(4119)───bash(4127)───pstree(4330)
-saffiche uniquement la lignée de ton processus. Les numéros varient d'une machine à l'autre. - ✅ Correction
$ ps aux --sort=-%mem | head -4 # ou en n'affichant que l'essentiel : $ ps -eo pid,%mem,cmd --sort=-%mem | head -4
Sur un bureau Ubuntu, on trouve en général Firefox et
gnome-shellen tête. - ✅ Correction
$ top # Maj+M : tri par mémoire · Maj+P : tri par processeur · q : quitter $ nproc 2 $ uptime 10:45:02 up 1:33, 1 user, load average: 0,38, 0,33, 0,29
Ici la charge (0,38) est bien inférieure au nombre de cœurs (2) : la machine est au repos.
- ✅ Correction
$ sudo apt install htop $ htop # F5 : vue en arbre · F3 : recherche · F10 ou q : quitter
- ✅ Correction
$ sleep 1000 & [1] 4521 $ pgrep -a sleep 4521 sleep 1000 $ kill 4521 [1]+ Complété sleep 1000
Le message « Complété » s'affiche à l'invite suivante. Pour
sleep, SIGTERM suffit toujours. - ✅ Correction
$ sleep 500 & sleep 600 & [1] 4600 [2] 4601 $ kill %1 ; kill -9 %2 [1]- Complété sleep 500 [2]+ Processus arrêté sleep 600
Bash signale le SIGKILL par « Processus arrêté » (Killed). On peut viser une tâche par son numéro
%1au lieu de son PID. - ✅ Correction
$ nano ~/labo/notes.txt # Ctrl+Z [1]+ Stoppé nano /home/user/labo/notes.txt $ jobs [1]+ Stoppé nano /home/user/labo/notes.txt $ fg
nano réapparaît exactement dans l'état où tu l'avais laissé.
- ✅ Correction
$ sleep 300 # Ctrl+Z [1]+ Stoppé sleep 300 $ bg [1]+ sleep 300 & $ jobs [1]+ En cours d'exécution sleep 300 &
- ✅ Correction
$ sudo apt install tmux $ tmux new -s test $ top # Ctrl+B puis D pour se détacher, puis fermer le terminal # dans un nouveau terminal : $ tmux ls test: 1 windows (created ...) $ tmux attach -t test
toptourne toujours : la session tmux a survécu à la fermeture du terminal. Pour la fermer :qpuisexit. - ✅ Correction
$ nice -n 10 sleep 900 & [1] 4810 $ renice -n 15 -p 4810 4810 (process ID) old priority 10, new priority 15 $ ps -o pid,ni,cmd -p 4810 PID NI CMD 4810 15 sleep 900
Essaie
renice -n 5 -p 4810: refusé sans sudo, car un utilisateur ne peut pas rendre un processus plus prioritaire.
💬 Questions fréquentes
Les questions qui reviennent le plus souvent sur ce module, avec leurs réponses.
Une application graphique ne répond plus, que faire ?
Ouvre un terminal (Ctrl + Alt + T), trouve son nom avec pgrep -a nom ou top, puis
pkill nom. Si elle résiste après quelques secondes : pkill -9 nom. GNOME propose aussi « Forcer à quitter » quand une fenêtre ne répond plus.
Si c'est tout le bureau qui est figé, passe en console avec Ctrl + Alt + F3 pour agir depuis là.
Qu'est-ce qu'un processus zombie ? Faut-il s'en inquiéter ?
Un zombie (Z dans ps) est un processus terminé dont le parent n'a pas encore récupéré le code de retour. Il n'utilise ni processeur
ni mémoire, seulement une ligne dans la table des processus. Quelques zombies sont sans gravité ; on ne peut pas les « tuer », car ils sont déjà morts.
C'est le parent qu'il faut corriger ou redémarrer.
kill -9 ne fonctionne pas sur un processus
Soit il appartient à un autre utilisateur (il faut sudo), soit il est en état D : bloqué dans le noyau en attente d'un disque ou
d'un partage réseau. Il disparaîtra quand l'opération se débloquera, sinon seul un redémarrage le libérera.