Cinq commandes suffisent pour maîtriser les processus Linux : ps, top, kill, nice et renice. Avec elles, vous identifierez le processus qui monopolise un CPU, ajusterez sa priorité, et l’arrêterez proprement — sans jamais redémarrer le serveur.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Lister tous les processus actifs avec
ps auxetps -eo - Trouver un PID par nom avec
pgrepetpidof - Lire les codes STAT (R, S, D, Z, T) et comprendre ce qu’ils signalent
- Surveiller en temps réel avec
top - Ajuster la priorité au lancement (
nice) et sur un processus existant (renice) - Arrêter proprement : séquence SIGTERM → attente → SIGKILL
- Explorer
/proc/$PID/statusetlsofpour diagnostiquer
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »Vous en avez besoin dès qu’un serveur se comporte anormalement :
- un processus utilise 100 % d’un CPU depuis plusieurs minutes,
- un service figure plusieurs fois dans
ps aux(fuite de processus), - une tâche est bloquée en état
D(I/O wait) et ne répond plus, - un zombie
Zs’accumule sans disparaître, - vous devez tuer proprement un service avant une maintenance.
Lister les processus avec ps
Section intitulée « Lister les processus avec ps »Afficher tous les processus
Section intitulée « Afficher tous les processus »ps auxColonnes clés :
| Colonne | Signification |
|---|---|
USER | Propriétaire |
PID | Identifiant unique |
%CPU | Pourcentage CPU utilisé |
%MEM | Pourcentage mémoire |
STAT | État (voir plus bas) |
COMMAND | Commande lancée |
Choisir les colonnes avec ps -eo
Section intitulée « Choisir les colonnes avec ps -eo »ps -eo pid,ppid,user,ni,stat,comm --sort=-%cpu | head -10Cela affiche les 10 processus les plus gourmands en CPU, avec leur PID parent et leur valeur nice.
Lire les états STAT
Section intitulée « Lire les états STAT »| Code | Signification |
|---|---|
R | En cours d’exécution (running) |
S | En attente (sleeping, réveillable) |
D | Bloqué sur I/O (non interruptible) |
Z | Zombie (terminé, parent n’a pas lu le code retour) |
T | Stoppé (Ctrl+Z ou SIGSTOP) |
s | Leader de session |
+ | Processus de premier plan (foreground) |
l | Multi-thread |
< | Haute priorité (valeur nice négative) |
Trouver un processus par nom
Section intitulée « Trouver un processus par nom »# Par nom exactpgrep nginx
# Plusieurs PIDs (plusieurs instances)pidof bash
# Pattern dans ps avec filtre auto-excluantps aux | grep '[n]ginx'Le trick [n]ginx exclut la ligne grep elle-même du résultat.
Visualiser l’arbre des processus
Section intitulée « Visualiser l’arbre des processus »pstree -pUtile pour comprendre les relations parent-enfant, identifier un processus orphelin, ou voir les threads d’un service.
Surveiller en temps réel avec top
Section intitulée « Surveiller en temps réel avec top »topTouches interactives utiles :
| Touche | Action |
|---|---|
P | Trier par CPU |
M | Trier par mémoire |
k | Envoyer un signal à un processus |
r | Changer la priorité (renice) |
q | Quitter |
Priorité d’exécution : nice et renice
Section intitulée « Priorité d’exécution : nice et renice »Chaque processus a une valeur nice de −20 (haute priorité) à +19 (basse priorité). La valeur par défaut est 0. Plus on monte, moins le processus est prioritaire.
Lancer un processus avec une priorité réduite
Section intitulée « Lancer un processus avec une priorité réduite »nice -n 15 tar czf archive.tar.gz /dataPratique pour des tâches longues (sauvegardes, compilations) qui ne doivent pas perturber les autres services.
Modifier la priorité d’un processus en cours
Section intitulée « Modifier la priorité d’un processus en cours »# Vérifier la valeur actuelleps -o pid,ni,comm -p 1234
# Changer la prioritérenice -n 10 -p 1234
# Vérifier aprèsps -o pid,ni,comm -p 1234Envoyer des signaux à un processus
Section intitulée « Envoyer des signaux à un processus »Signaux courants
Section intitulée « Signaux courants »| Numéro | Nom | Effet |
|---|---|---|
| 1 | SIGHUP | Rechargement de configuration |
| 2 | SIGINT | Interruption clavier (Ctrl+C) |
| 15 | SIGTERM | Demande d’arrêt propre (défaut) |
| 9 | SIGKILL | Arrêt forcé immédiat (non interceptable) |
| 19 | SIGSTOP | Pause (non interceptable) |
| 18 | SIGCONT | Reprise après pause |
Séquence recommandée pour arrêter un processus
Section intitulée « Séquence recommandée pour arrêter un processus »# 1. Demande d'arrêt proprekill -TERM 1234
# 2. Attendre quelques secondes, puis vérifiersleep 3 && ps -p 1234
# 3. Forcer seulement si le processus ne répond toujours paskill -9 1234Tuer par nom avec pkill et killall
Section intitulée « Tuer par nom avec pkill et killall »# Envoyer SIGTERM à tous les processus nommés "nginx"pkill -TERM nginx
# Recharger la configuration de sshdkill -HUP $(pidof sshd)
# Tuer tous les processus d'un nom (killall)killall -SIGTERM firefoxExplorer /proc pour diagnostiquer
Section intitulée « Explorer /proc pour diagnostiquer »Linux expose les informations de chaque processus dans /proc/<PID>/ :
# Fiche du processus courantcat /proc/$$/status
# Extraire les champs utilesgrep -E "^(Name|Pid|PPid|State|VmRSS)" /proc/1234/statusExemple de sortie :
Name: nginxState: S (sleeping)Pid: 1234PPid: 1VmRSS: 8560 kBLister les fichiers ouverts par un processus
Section intitulée « Lister les fichiers ouverts par un processus »lsof -p 1234Ou pour trouver quel processus utilise un port :
lsof -i :80Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
kill -9 1234 ne tue pas le processus | État D (I/O bloqué, non interruptible) | Diagnostiquer le sous-système I/O (disque, NFS) |
pkill nginx ne trouve rien | Nom de commande différent du binaire | Utiliser pgrep pour confirmer le nom exact |
renice -n -5 refusé | Utilisateur non root pour descendre sous 0 | Utiliser sudo renice |
Zombie Z qui ne disparaît pas | Processus parent n’a pas appelé wait() | Identifier le parent avec ps -o ppid -p $ZOMBIE — tuer le parent si possible |
top ne rafraîchit plus | Terminal gelé | q ou Ctrl+C, puis relancer |
À retenir
Section intitulée « À retenir »ps auxliste tous les processus ;ps -eochoisit les colonnes.pgrep <nom>etps aux | grep '[n]om'trouvent un PID par nom.- Les codes STAT (
R,S,D,Z,T) indiquent l’état —DetZméritent attention. nice -n N commande(priorité au lancement) ;renice -n N -p PID(après démarrage).- Toujours SIGTERM d’abord, attendre, puis SIGKILL seulement si nécessaire.
/proc/$PID/statusetlsof -p $PIDpermettent de diagnostiquer sans outil externe.