Aller au contenu
Administration Linux medium

Arrêter un processus Linux

8 min de lecture

Quand un programme ne répond plus ou consomme trop de ressources, il faut l’arrêter. Linux utilise un système de signaux pour communiquer avec les processus. La commande kill envoie ces signaux — et malgré son nom, elle ne tue pas toujours : elle demande d’abord poliment.

  • Arrêter un processus proprement avec kill
  • Forcer l’arrêt avec kill -9
  • Comprendre les signaux SIGTERM, SIGKILL et SIGINT
  • Cibler un processus par nom avec killall et pkill
  • Reprendre le contrôle d’un terminal bloqué

Un signal est un message envoyé à un processus pour lui demander d’agir. Voici les trois à connaître :

SignalNuméroEffet
SIGTERM15Demande d’arrêt propre (le processus peut sauvegarder et se fermer)
SIGKILL9Arrêt immédiat et forcé (le processus ne peut pas l’ignorer)
SIGINT2Interruption (équivalent de Ctrl+C)

kill envoie un signal à un processus identifié par son PID.

  1. Trouvez le PID du processus à arrêter :

    Fenêtre de terminal
    ps aux | grep nom-du-programme
    Exemple
    bob 1400 2.5 1.0 245680 98200 pts/0 S+ 10:00 0:03 python3 long-script.py

    Le PID est 1400.

  2. Envoyez SIGTERM (arrêt propre) :

    Fenêtre de terminal
    kill 1400
  3. Vérifiez que le processus a disparu :

    Fenêtre de terminal
    ps aux | grep 1400
  4. Si le processus est toujours là, forcez avec SIGKILL :

    Fenêtre de terminal
    kill -9 1400
Fenêtre de terminal
kill PID # Envoie SIGTERM (signal 15) — par défaut
kill -15 PID # Identique — SIGTERM explicite
kill -9 PID # Envoie SIGKILL — arrêt forcé
kill -SIGTERM PID # Même chose avec le nom du signal

Quand un programme tourne en premier plan dans votre terminal :

RaccourciSignal envoyéEffet
Ctrl+CSIGINT (2)Demande d’interruption
Ctrl+ZSIGTSTP (20)Suspend le processus (ne l’arrête pas)
Ctrl+\SIGQUIT (3)Arrêt avec core dump (dernier recours)

Pour la plupart des situations, Ctrl+C suffit.

killall cible tous les processus portant un nom donné :

Fenêtre de terminal
# Arrêter tous les processus "firefox"
killall firefox
# Forcer l'arrêt
killall -9 firefox

pkill est plus flexible — il accepte un motif partiel :

Fenêtre de terminal
# Arrêter les processus dont le nom contient "python"
pkill python
# Arrêter les processus d'un utilisateur précis
pkill -u alice

Différence entre killall et pkill :

CommandeCorrespondance
killall firefoxNom exact : firefox
pkill fireMotif partiel : tout ce qui contient fire

Quand votre terminal semble bloqué, essayez dans cet ordre :

  1. Ctrl+C — interrompt le processus en premier plan

  2. Ctrl+Z — suspend le processus (puis kill %1 pour le terminer)

  3. Si rien ne répond, ouvrez un second terminal et trouvez le PID :

    Fenêtre de terminal
    ps aux | grep votre-commande
  4. Depuis le second terminal :

    Fenêtre de terminal
    kill PID
  5. En dernier recours :

    Fenêtre de terminal
    kill -9 PID
Fenêtre de terminal
# Trouver le PID du serveur
ps aux | grep "python3 -m http.server"
# Résultat : PID 2100
kill 2100
Fenêtre de terminal
# Plusieurs instances de script.sh tournent
pkill -f "script.sh"

L’option -f cherche dans la ligne de commande complète, pas seulement le nom du processus.

Fenêtre de terminal
# Après kill
ps -p 2100

Si le processus a disparu, pas de sortie. Sinon, il est encore actif.

CommandeAction
kill PIDEnvoie SIGTERM au processus (arrêt propre)
kill -9 PIDEnvoie SIGKILL (arrêt forcé)
killall nomArrête tous les processus nommés exactement nom
pkill motifArrête les processus correspondant au motif
pkill -f "commande"Cherche dans la ligne de commande complète
Ctrl+CInterrompt le processus en premier plan
Ctrl+ZSuspend le processus en premier plan
SymptômeCause probableSolution
kill PID ne fait rienLe processus ignore SIGTERMAttendre quelques secondes, puis kill -9 PID
kill: (PID) - Opération non permiseLe processus appartient à un autre utilisateurUtiliser sudo kill PID
killall ne trouve pas le processusLe nom ne correspond pas exactementUtiliser pkill avec un motif partiel
Un processus zombie persisteLe parent n’a pas récupéré le code de sortieTuer le processus parent ou attendre
kill -9 ne fonctionne pasProcessus en état D (attente I/O noyau) — très rareRésoudre le problème I/O (disque, réseau) ou redémarrer
  • SIGTERM (kill PID) demande un arrêt propre — toujours essayer en premier.
  • SIGKILL (kill -9 PID) force l’arrêt — dernier recours.
  • Ctrl+C envoie SIGINT au processus en premier plan.
  • killall cible par nom exact, pkill par motif partiel.
  • Vérifiez toujours avec ps que le processus a bien disparu.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn