Aller au contenu
Administration Linux medium

Gérer les processus sous Linux

9 min de lecture

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.

  • Lister tous les processus actifs avec ps aux et ps -eo
  • Trouver un PID par nom avec pgrep et pidof
  • 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/status et lsof pour diagnostiquer

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 Z s’accumule sans disparaître,
  • vous devez tuer proprement un service avant une maintenance.
Fenêtre de terminal
ps aux

Colonnes clés :

ColonneSignification
USERPropriétaire
PIDIdentifiant unique
%CPUPourcentage CPU utilisé
%MEMPourcentage mémoire
STATÉtat (voir plus bas)
COMMANDCommande lancée
Fenêtre de terminal
ps -eo pid,ppid,user,ni,stat,comm --sort=-%cpu | head -10

Cela affiche les 10 processus les plus gourmands en CPU, avec leur PID parent et leur valeur nice.

CodeSignification
REn cours d’exécution (running)
SEn attente (sleeping, réveillable)
DBloqué sur I/O (non interruptible)
ZZombie (terminé, parent n’a pas lu le code retour)
TStoppé (Ctrl+Z ou SIGSTOP)
sLeader de session
+Processus de premier plan (foreground)
lMulti-thread
<Haute priorité (valeur nice négative)
Fenêtre de terminal
# Par nom exact
pgrep nginx
# Plusieurs PIDs (plusieurs instances)
pidof bash
# Pattern dans ps avec filtre auto-excluant
ps aux | grep '[n]ginx'

Le trick [n]ginx exclut la ligne grep elle-même du résultat.

Fenêtre de terminal
pstree -p

Utile pour comprendre les relations parent-enfant, identifier un processus orphelin, ou voir les threads d’un service.

Fenêtre de terminal
top

Touches interactives utiles :

ToucheAction
PTrier par CPU
MTrier par mémoire
kEnvoyer un signal à un processus
rChanger la priorité (renice)
qQuitter

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.

Fenêtre de terminal
nice -n 15 tar czf archive.tar.gz /data

Pratique pour des tâches longues (sauvegardes, compilations) qui ne doivent pas perturber les autres services.

Fenêtre de terminal
# Vérifier la valeur actuelle
ps -o pid,ni,comm -p 1234
# Changer la priorité
renice -n 10 -p 1234
# Vérifier après
ps -o pid,ni,comm -p 1234
NuméroNomEffet
1SIGHUPRechargement de configuration
2SIGINTInterruption clavier (Ctrl+C)
15SIGTERMDemande d’arrêt propre (défaut)
9SIGKILLArrêt forcé immédiat (non interceptable)
19SIGSTOPPause (non interceptable)
18SIGCONTReprise après pause
Fenêtre de terminal
# 1. Demande d'arrêt propre
kill -TERM 1234
# 2. Attendre quelques secondes, puis vérifier
sleep 3 && ps -p 1234
# 3. Forcer seulement si le processus ne répond toujours pas
kill -9 1234
Fenêtre de terminal
# Envoyer SIGTERM à tous les processus nommés "nginx"
pkill -TERM nginx
# Recharger la configuration de sshd
kill -HUP $(pidof sshd)
# Tuer tous les processus d'un nom (killall)
killall -SIGTERM firefox

Linux expose les informations de chaque processus dans /proc/<PID>/ :

Fenêtre de terminal
# Fiche du processus courant
cat /proc/$$/status
# Extraire les champs utiles
grep -E "^(Name|Pid|PPid|State|VmRSS)" /proc/1234/status

Exemple de sortie :

Name: nginx
State: S (sleeping)
Pid: 1234
PPid: 1
VmRSS: 8560 kB
Fenêtre de terminal
lsof -p 1234

Ou pour trouver quel processus utilise un port :

Fenêtre de terminal
lsof -i :80
SymptômeCause probableSolution
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 rienNom de commande différent du binaireUtiliser pgrep pour confirmer le nom exact
renice -n -5 refuséUtilisateur non root pour descendre sous 0Utiliser sudo renice
Zombie Z qui ne disparaît pasProcessus parent n’a pas appelé wait()Identifier le parent avec ps -o ppid -p $ZOMBIE — tuer le parent si possible
top ne rafraîchit plusTerminal geléq ou Ctrl+C, puis relancer
  • ps aux liste tous les processus ; ps -eo choisit les colonnes.
  • pgrep <nom> et ps aux | grep '[n]om' trouvent un PID par nom.
  • Les codes STAT (R, S, D, Z, T) indiquent l’état — D et Z mé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/status et lsof -p $PID permettent de diagnostiquer sans outil externe.

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