Retour au cours

gestion des processus : ps, kill, top, htop

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 top et htop.

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 q pour 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 top de manière plus claire.
  • Vous pouvez utiliser les flèches pour naviguer, et F9 pour “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 un kill -9 <PID> (SIGKILL).
  • Utilisez pgrep : Pour trouver facilement le PID d’un processus, la commande pgrep est très pratique.
    # Arrêter tous les processus firefox
    kill $(pgrep firefox)
  • Préférez htop : Si vous pouvez l’installer, htop est bien plus agréable à utiliser que top.

Exercices

  1. 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 sleep pour trouver son PID.
    • Utilisez kill avec ce PID pour arrêter la commande sleep.
    • Vérifiez avec ps qu’elle a bien disparu.
  2. Exploration avec htop :

    • Installez htop s’il n’est pas déjà présent.
    • Lancez htop.
    • Identifiez le processus qui consomme le plus de CPU (souvent htop lui-même ou votre navigateur web).
    • Utilisez la touche F4 pour filtrer et n’afficher que les processus contenant “bash”.
    • Quittez avec F10 ou q.
  3. 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 pour kill $(pgrep ...).
    • Vérifiez que le processus a disparu.