Objectifs
- Comprendre ce qu’est un processus et son identifiant (PID).
- Lister les processus en cours d’exécution avec
ps. - Arrêter proprement (ou forcer) un processus avec
kill. - Surveiller l’utilisation des ressources en temps réel avec
topethtop.
Qu’est-ce qu’un processus ?
Un processus est une instance d’un programme en cours d’exécution. Lorsque vous lancez firefox, vous créez un processus. Lorsque le système démarre un service, il crée un processus.
Chaque processus se voit attribuer par le système un numéro d’identification unique : le PID (Process ID). C’est ce PID que l’on utilise pour manipuler un processus spécifique.
ps : Lister les processus
La commande ps (Process Status) prend un “instantané” des processus qui tournent au moment où vous la lancez. Elle a de très nombreuses options, mais une combinaison est utilisée dans 99% des cas :
ps aux
a: Affiche les processus de tous les utilisateurs.u: Affiche des informations détaillées (utilisateur, %CPU, %MEM…).x: Affiche aussi les processus qui ne sont pas attachés à un terminal (comme les services système).
ps aux
# USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
# root 1 0.0 0.1 169652 13532 ? Ss 10:00 0:02 /sbin/init
# alice 1234 0.5 2.1 250316 85124 ? Sl 10:05 0:30 firefox
# alice 5678 0.0 0.0 15860 2380 pts/0 R+ 11:20 0:00 ps aux
C’est souvent combiné avec grep pour trouver un processus spécifique :
ps aux | grep firefox
kill : Envoyer un signal à un processus
La commande kill n’est pas seulement faite pour “tuer”. Son vrai rôle est d’envoyer un signal à un processus. Par défaut, elle envoie le signal SIGTERM (N°15), qui est une demande polie au processus de se terminer proprement (sauvegarder ses fichiers, fermer ses connexions…).
# Trouve le PID de firefox, puis lui demande de s'arrêter
kill 1234
Si un processus est bloqué et ne répond pas à SIGTERM, on peut utiliser le signal ultime : SIGKILL (N°9). Ce signal ne peut pas être ignoré ; le système tue le processus immédiatement. C’est l’équivalent d’un “arrêt d’urgence”.
kill -9 1234
# ou
kill -SIGKILL 1234
top et htop : Surveillance en temps réel
Alors que ps est un instantané, top et htop sont des tableaux de bord interactifs qui se mettent à jour en temps réel.
top
Présent sur presque tous les systèmes, top affiche une liste des processus les plus gourmands, triés par défaut par utilisation du CPU.
- Appuyez sur
qpour quitter. - Appuyez sur
M(majuscule) pour trier par utilisation de la mémoire. - Appuyez sur
P(majuscule) pour trier par utilisation du CPU.
htop
htop est une version moderne, colorée et beaucoup plus conviviale de top. Il faut souvent l’installer (sudo apt install htop ou sudo dnf install htop).
- Il affiche les mêmes informations que
topde manière plus claire. - Vous pouvez utiliser les flèches pour naviguer, et
F9pour “tuer” un processus. - C’est l’outil de choix pour explorer les processus de manière interactive.
Bonnes pratiques
- Tuez poliment d’abord : Utilisez toujours
kill <PID>(SIGTERM) avant de tenter unkill -9 <PID>(SIGKILL). - Utilisez
pgrep: Pour trouver facilement le PID d’un processus, la commandepgrepest très pratique.# Arrêter tous les processus firefox kill $(pgrep firefox) - Préférez
htop: Si vous pouvez l’installer,htopest bien plus agréable à utiliser quetop.
Exercices
-
Chasse au processus :
- Dans un terminal, lancez une commande qui dure longtemps, par exemple
sleep 300 &(le&la met en arrière-plan). - Dans le même terminal, utilisez
ps aux | grep sleeppour trouver son PID. - Utilisez
killavec ce PID pour arrêter la commandesleep. - Vérifiez avec
psqu’elle a bien disparu.
- Dans un terminal, lancez une commande qui dure longtemps, par exemple
-
Exploration avec
htop:- Installez
htops’il n’est pas déjà présent. - Lancez
htop. - Identifiez le processus qui consomme le plus de CPU (souvent
htoplui-même ou votre navigateur web). - Utilisez la touche
F4pour filtrer et n’afficher que les processus contenant “bash”. - Quittez avec
F10ouq.
- Installez
-
Tuer avec
pkill:- Lancez à nouveau
sleep 300 &. - Cette fois, utilisez la commande
pkill sleep. Elle trouve et tue les processus par leur nom. C’est un raccourci pourkill $(pgrep ...). - Vérifiez que le processus a disparu.
- Lancez à nouveau