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 tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn