GUIDE PRATIQUE
Comment tuer un processus sous Linux quand tout est bloqué
Identifiez, stoppez et prévenez les processus problématiques : même quand votre système ne répond plus.
Un processus qui consomme 100% du CPU, une application qui ne répond plus, un Linux complètement figé… Ces situations arrivent à tout le monde, y compris aux administrateurs système expérimentés. Savoir tuer un processus sous Linux est une compétence essentielle que tout utilisateur devrait maîtriser.
Dans ce guide complet, nous verrons tout ce qu’il faut savoir : identifier le processus responsable, le stopper proprement, réagir quand Linux est bloqué, comprendre l’OOM Killer, gérer les zombies à distance et surtout : prévenir ces problèmes.
📋 Ce que vous allez apprendre :
- Identifier un processus qui pose problème avec
top,htopetps - Tuer un processus :
kill,kill -9,pkill,killall - Récupérer un Linux figé étape par étape
- Utiliser SysRq REISUB comme dernier recours
- Comprendre l’OOM Killer et pourquoi Linux tue des processus
- Tuer un processus à distance via SSH
- Nettoyer les processus zombies
- Prévenir les blocages avec
ulimitet cgroups
1. Identifier un processus qui pose problème
Avant de tuer quoi que ce soit, il faut savoir quel processus est responsable du ralentissement ou du blocage. Linux offre plusieurs outils pour ça.
top : L’outil de base
top est installé par défaut sur pratiquement toutes les distributions Linux. Il affiche les processus en temps réel, triés par consommation CPU :
top
Les colonnes importantes :
| Colonne | Signification |
|---|---|
PID |
Identifiant unique du processus (celui qu’il faut pour le tuer) |
%CPU |
Pourcentage de CPU utilisé |
%MEM |
Pourcentage de mémoire vive utilisée |
COMMAND |
Nom de la commande |
💡 Astuce : Dans top, appuyez sur M pour trier par mémoire, ou P pour trier par CPU. Appuyez sur q pour quitter.
htop : Version améliorée
htop est une version plus conviviale de top avec une interface colorée et interactive :
# Installation sur Debian/Ubuntu
sudo apt install htop
# Installation sur RHEL/Fedora
sudo dnf install htop
# Lancement
htop
✅ Recommandation : htop est plus lisible et permet de sélectionner un processus avec les flèches, puis de le tuer avec F9. C’est l’outil que nous recommandons au quotidien.
ps : Requête ciblée
Pour chercher un processus spécifique, ps est plus adapté :
# Trouver tous les processus liés à Firefox
ps aux | grep firefox
# Afficher les 10 processus les plus gourmands en CPU
ps aux --sort=-%cpu | head -10
# Afficher les 10 processus les plus gourmands en mémoire
ps aux --sort=-%mem | head -10
gnome-system-monitor : Interface graphique
Si vous préférez une interface graphique (GNOME, KDE, XFCE), le moniteur système fait le travail :
# Installation
sudo apt install gnome-system-monitor
# Lancement (ou cherchez "Moniteur système" dans le menu)
gnome-system-monitor
Depuis l’interface, faites un clic droit sur un processus et choisissez « Tuer » ou « Arrêter ».
2. Tuer un processus : kill, kill -9, pkill, killall
Une fois le PID (Process ID) identifié, plusieurs commandes permettent de stopper un processus. Chacune a ses spécificités.
kill : Le signal SIGTERM
kill envoie un signal au processus. Par défaut, il envoie SIGTERM (signal 15), qui demande au processus de se terminer proprement :
# Terminer proprement le processus 1234
kill 1234
# Équivalent explicite
kill -15 1234
# Lui laisser 5 secondes, puis vérifier s'il est toujours là
kill 1234 && sleep 5 && ps -p 1234
Le processus a la possibilité de :
- Sauvegarder son état
- Fermer les fichiers ouverts
- Libérer les ressources
- Se terminer proprement
kill -9 (SIGKILL) : La force brute
# Tuer immédiatement le processus 1234
kill -9 1234
⚠️ Attention : kill -9 envoie le signal SIGKILL (signal 9). Le processus est immédiatement arrêté par le noyau, sans possibilité de se nettoyer. Les fichiers temporaires ne sont pas supprimés, les connexions ne sont pas fermées proprement. À réserver en dernier recours.
Tableau comparatif : Quand utiliser quoi
| Commande | Usage | Quand l’utiliser |
|---|---|---|
kill PID |
SIGTERM sur un PID | Toujours en premier : arrêt propre |
kill -9 PID |
SIGKILL sur un PID | Si kill ne fonctionne pas |
pkill -f nom |
Tue par nom/regex | Plusieurs instances du même programme |
killall nom |
Tue toutes les instances | Quand le nom exact est connu |
xkill |
Clic sur une fenêtre | Interface graphique figée |
pkill et killall : Tuer par nom
# Tuer tous les processus Firefox
pkill -f firefox
# Tuer tous les processus python3
killall python3
# Tuer proprement (SIGTERM) tous les processus d'un utilisateur
pkill -u nom_utilisateur
# Vérifier ce qu'on va tuer avant (dry run)
pgrep -f firefox
💡 Bonne pratique : Utilisez toujours pgrep ou ps aux | grep avant pkill pour vérifier que vous ne tuez pas le mauvais processus. Une fausse manip avec pkill peut fermer votre session SSH ou tuer un processus critique.
sudo et permissions
Pour tuer un processus qui appartient à un autre utilisateur (ou un processus système), vous avez besoin des permissions appropriées :
# Tuer un processus système
sudo kill -9 1234
# Tuer tous les processus d'un autre utilisateur
sudo pkill -u nom_utilisateur
3. Linux figé / ne répond plus : que faire étape par étape
Quand Linux ne répond plus du tout : souris figée, clavier inactif, écran gelé : il faut procéder par ordre de sévérité :
Étape 1 : Essayer le terminal (Ctrl + Alt + F2/F3)
Les terminaux virtuels (TTY) fonctionnent souvent même quand l’interface graphique est bloquée :
# Basculer sur un terminal virtuel
Ctrl + Alt + F2
# Se connecter, puis identifier et tuer le processus
top
kill -9 PID_DU_PROCESSUS
# Revenir à l'interface graphique
Ctrl + Alt + F1 # ou F7 selon la configuration
Étape 2 : Tuer l’interface graphique
Si c’est le serveur d’affichage qui est bloqué :
# Avec Wayland (GNOME par défaut sur Ubuntu 22.04+)
sudo systemctl restart gdm3
# Avec X11
sudo systemctl restart gdm # GNOME
sudo systemctl restart lightdm # LightDM
sudo systemctl restart sddm # KDE
# Alternative : tuer la session graphique
sudo pkill -9 Xorg
sudo pkill -9 wayland
Étape 3 : REISUB via SysRq (voir section suivante)
Étape 4 : Reset matériel (dernier recours)
⚠️ Dernier recours uniquement : Maintenez le bouton power enfoncé pendant 5-10 secondes. Cela coupe l’alimentation immédiatement. Risque de perte de données et de corruption du système de fichiers. Si c’est la seule option, après le redémarrage, lancez sudo fsck -y pour vérifier les disques.
4. SysRq REISUB : le dernier recours expliqué simplement
Magic SysRq est une combinaison de touches qui envoie des commandes directement au noyau Linux, même quand le système est complètement figé. C’est l’équivalent propre d’un force restart Linux.
Comment activer SysRq
# Vérifier si SysRq est actif
cat /proc/sys/kernel/sysrq
# L'activer (1 = toutes les commandes activées)
sudo sysctl -w kernel.sysrq=1
# Le rendre permanent
echo "kernel.sysrq = 1" | sudo tee -a /etc/sysctl.d/99-sysrq.conf
La séquence REISUB
Tapez ces touches lentement, une par une, en maintenant Alt + SysRq enfoncés :
| Touche | Action | Signification |
|---|---|---|
| R | Remet le clavier en mode raw | Reprend le contrôle du clavier |
| E | Envoie SIGTERM à tous les processus | Demande une fermeture propre |
| I | Envoie SIGKILL à tous les processus | Tue ce qui n’a pas répondu |
| S | Synchronise les disques | Écrit les données en cache sur le disque |
| U | Remonte les disques en read-only | Protège les données |
| B | Reboot | Redémarre le système |
💡 Moyen mnémotechnique : Reboot Even If System Utterly Broken : « Redémarre même si le système est complètement cassé. »
Alternative sur certains claviers
Sur les claviers sans touche SysRq :
# Via SSH si vous avez un accès distant
echo b | sudo tee /proc/sysrq-trigger
# Séquence complète via SSH
for key in r e i s u b; do echo $key | sudo tee /proc/sysrq-trigger; sleep 1; done
5. OOM Killer : pourquoi Linux tue des processus tout seul
Vous avez peut-être vu ce message dans dmesg ou /var/log/syslog :
Out of memory: Killed process 12345 (java) total-vm:2048000kB
C’est l’OOM Killer (Out-Of-Memory Killer). Quand la mémoire vive est saturée et que le système ne peut plus allouer de RAM, le noyau Linux tue automatiquement le processus le plus « coûteux » pour éviter un crash complet.
Comment fonctionne l’OOM Killer
Chaque processus reçoit un score oom_score (de 0 à 1000). Plus le score est élevé, plus le processus est susceptible d’être tué :
# Voir le score OOM de tous les processus
sudo cat /proc/*/oom_score | sort -rn | head
# Voir le score d'un processus spécifique
cat /proc/1234/oom_score
# Protéger un processus critique (score à -1000, ne sera jamais tué)
echo -1000 | sudo tee /proc/1234/oom_score_adj
Surveiller la mémoire
# Mémoire disponible (version lisible)
free -h
# Détail de l'utilisation mémoire
vmstat 1 5
# Swappiness (tendance à utiliser le swap, 0-100)
cat /proc/sys/vm/swappiness
# Réduire le swappiness pour préférer garder les données en RAM
sudo sysctl -w vm.swappiness=10
⚠️ Erreur courante : Ne désactivez jamais l’OOM Killer (vm.panic_on_oom=0 sans aucune autre protection). Sans lui, un manque de RAM peut causer un kernel panic et un crash complet du système. Préférez ajuster les scores ou ajouter de la RAM.
6. SSH à distance : tuer un processus depuis une autre machine
Quand un serveur est inaccessible localement mais que le réseau fonctionne, SSH est votre meilleure option :
# Connexion au serveur distant
ssh utilisateur@192.168.1.100
# Identifier les processus gourmands
top -b -n 1 | head -20
# Tuer un processus distant
ssh utilisateur@192.168.1.100 "kill -9 1234"
# Tuer tous les processus d'une application distante
ssh utilisateur@192.168.1.100 "pkill -9 nginx"
# Vérifier l'état mémoire à distance
ssh utilisateur@192.168.1.100 "free -h && df -h"
Quand le serveur est très lent à répondre en SSH
# SSH avec timeout pour ne pas attendre indéfiniment
ssh -o ConnectTimeout=10 utilisateur@serveur
# Si la connexion est très lente (compression activée)
ssh -C utilisateur@serveur
# Exécuter une commande directement sans shell interactif
ssh -o ConnectTimeout=10 utilisateur@serveur "ps aux --sort=-%cpu | head -5"
📋 Résumé : SSH permet d’agir sur un serveur figé tant que le réseau fonctionne. C’est une raison de plus pour avoir un accès SSH configuré sur toutes vos machines Linux.
7. Processus zombies : les identifier et les nettoyer
Un processus zombie (noté Z dans top) est un processus qui a terminé son exécution mais dont l’entrée dans la table des processus subsiste parce que le processus parent n’a pas lu son code de sortie.
Identifier les zombies
# Compter les processus zombies
ps aux | awk '{if ($8 ~ /Z/) print}' | wc -l
# Lister les zombies avec leur PID parent
ps aux | awk '{if ($8 ~ /Z/) print $2, $11}'
# Afficher les zombies avec leur parent
ps -eo pid,ppid,stat,cmd | grep Z
Les tuer
On ne peut pas tuer un zombie directement avec kill -9 : il est déjà mort. La solution est de tuer le processus parent :
# 1. Trouver le PID parent (PPID) du zombie
ps -eo pid,ppid,stat,cmd | grep Z
# 2. Tuer le processus parent (remplacer PID_PARENT)
sudo kill -9 PID_PARENT
# 3. Le zombie est adopté par init/systemd et nettoyé automatiquement
# Alternative : envoyer SIGCHLD au parent pour qu'il nettoie ses enfants
sudo kill -s SIGCHLD PID_PARENT
✅ À savoir : Quelques zombies isolés ne posent pas de problème : ils consomment quasiment aucune ressource. C’est seulement s’ils s’accumulent en grand nombre qu’il faut intervenir. systemd nettoie automatiquement les zombies orphelins.
8. Prévention : limites de ressources, cgroups et monitoring
Mieux vaut prévenir que guérir. Voici comment éviter que des processus ne bloquent votre système.
ulimit : Limiter les ressources par utilisateur
# Voir les limites actuelles
ulimit -a
# Limiter la mémoire par processus à 4 Go
ulimit -v 4194304
# Limiter le temps CPU à 300 secondes (5 min)
ulimit -t 300
# Limiter le nombre de processus par utilisateur
ulimit -u 500
# Appliquer de façon permanente (éditer limits.conf)
sudo nano /etc/security/limits.d/90-custom.conf
# Contenu :
# * hard rss 4194304
# * hard nproc 500
cgroups : Isoler et limiter des groupes de processus
# Créer un cgroup avec systemd-run (limite mémoire à 512 Mo)
sudo systemd-run --user --scope -p MemoryMax=512M commande
# Lancer un navigateur avec une limite de 2 Go
sudo systemd-run --user --scope -p MemoryMax=2G firefox
# Vérifier la consommation d'un cgroup
systemctl status systemd-run-XXXX.scope
# Lister les cgroups actifs
systemctl list-units --type=scope --state=running
Monitoring proactif
# Surveillance en temps réel avec watch
watch -n 2 "free -h && echo '---' && ps aux --sort=-%cpu | head -6"
# Alertes avec les notifications systemd
# Exemple : notifier quand la mémoire dépasse 90%
sudo apt install libnotify-bin
watch -n 10 "MEM=$(free | awk '/Mem/{printf(\"%.0f\", \$3/\$2*100)}'); [ \$MEM -gt 90 ] && notify-send 'Alerte mémoire' 'Utilisation: '\$MEM'%'"
# Vérifier les logs OOM
sudo dmesg | grep -i "out of memory"
sudo journalctl -k | grep -i "oom"
✅ Pour les serveurs : En environnement de production, utilisez des outils comme Prometheus + Grafana ou Netdata pour monitorer CPU, RAM et disque en continu avec des alertes automatiques avant que les seuils critiques ne soient atteints.
FAQ : Questions fréquentes
Quelle est la différence entre kill et kill -9 ?
kill (SIGTERM) demande poliment au processus de se terminer. Le processus peut sauvegarder ses données et se fermer proprement. kill -9 (SIGKILL) tue le processus immédiatement sans lui laisser le temps de se nettoyer. Utilisez toujours kill en premier, et kill -9 uniquement si le processus ignore SIGTERM.
Pourquoi kill -9 ne fonctionne pas sur un processus ?
Si kill -9 ne marche pas, le processus est probablement en état D (uninterruptible sleep) : il attend une opération disque ou réseau qui ne répond pas. Vérifiez avec ps aux (colonne STAT). Dans ce cas, seul un reboot ou la correction du problème sous-jacent (disque bloqué, NFS inaccessible) résoudra le problème.
Peut-on tuer un processus kernel (PID 1) ?
Non. Le processus PID 1 (généralement systemd ou init) ne peut pas être tué. Si vous essayez, le noyau vous refusera l’accès. Tuer le PID 1 provoquerait un kernel panic immédiat. Si systemd pose problème, la seule solution est le reboot.
Comment savoir si l’OOM Killer a tué un processus ?
# Vérifier les logs noyau
sudo dmesg | grep -i "oom\|killed process"
sudo journalctl -k --since "1 hour ago" | grep -i oom
Si l’OOM Killer est actif trop souvent, ajoutez de la RAM, ajustez vm.swappiness, ou protégez les processus critiques avec oom_score_adj.
Linux freeze après mise à jour, que faire ?
Si un linux hang survient après une mise à jour, c’est souvent un problème de pilote ou de noyau. Essayez :
1. Redémarrer en sélectionnant un ancien noyau dans GRUB
2. Purger les paquets cassés : sudo dpkg --configure -a && sudo apt --fix-broken install
3. Si le mot de passe ne fonctionne plus après la mise à jour, consultez notre guide de réinitialisation de mot de passe Linux
Comment empêcher un utilisateur de tuer des processus système ?
C’est géré par les permissions Linux. Un utilisateur standard ne peut tuer que ses propres processus. Pour tuer un processus d’un autre utilisateur, il faut les droits sudo. Vérifiez votre configuration /etc/sudoers avec visudo.
xkill ne fonctionne pas sur Wayland, que faire ?
Sur Wayland, xkill ne fonctionne pas car X11 n’est pas présent. Utilisez kill en ligne de commande, ou le moniteur système (gnome-system-monitor). Vous pouvez aussi utiliser wl-copy et les outils Wayland natifs. La plupart des distributions permettent de basculer sur un TTY avec Ctrl+Alt+F2.
Un processus qui pose problème sur votre serveur ?
Notre équipe peut diagnostiquer et sécuriser votre infrastructure Linux pour éviter les blocages récurrents.

