Skip to content

Récapitulatif - Gestion des processus

1. Concepts fondamentaux

Qu'est-ce qu'un processus ?

Un processus est un programme en cours d'exécution, chargé en mémoire vive (RAM) pour être traité par le CPU.

Caractéristiques essentielles :

  • PID : Identifiant unique (Process IDentifier)
  • PPID : PID du processus parent
  • Hiérarchie parent-enfant
  • États multiples selon l'activité

Cycle de vie d'un processus

ÉtatDescriptionUtilisation CPU
Réveil (Wake up)Phase d'initialisationNon
Prêt (Ready)En attente d'attribution CPUNon
Actif (Running)En cours d'exécutionOui
Endormi (Sleeping)En attente I/O (disque, réseau)Non
Suspendu (Stopped)Interrompu par signal (Ctrl+Z)Non
ZombieTerminé, en attente de récupérationNon

Préemption

Mécanisme permettant à l'ordonnanceur d'interrompre un processus pour en exécuter un autre, garantissant :

  • Partage équitable du CPU
  • Réactivité du système
  • Éviter la monopolisation des ressources

2. La commande ps - Affichage des processus

Syntaxes de base

CommandeDescriptionUsage
psProcessus du terminal courantConsultation rapide
ps -e ou ps -ATous les processusVue globale
ps -efTous processus avec détailsAdministration
ps auxFormat completLe plus utilisé
ps -u userProcessus d'un utilisateurFiltrage par utilisateur

Colonnes importantes

ColonneSignificationUtilité
PIDProcess IDIdentification unique
PPIDParent Process IDHiérarchie des processus
USERPropriétaireSécurité et permissions
%CPUPourcentage CPUPerformance
%MEMPourcentage mémoireConsommation mémoire
VSZMémoire virtuelle (Ko)Allocation mémoire
RSSMémoire résidente (Ko)Mémoire physique utilisée
STATÉtat du processusÉtat actuel
TIMETemps CPU cumuléUtilisation des ressources
CMDCommande exécutéeIdentification du programme

Codes d'état (STAT)

CodeÉtatDescription
RRunningEn cours d'exécution ou prêt
SSleepingSuspendu (attente événement)
DDisk sleepSommeil non interrompable (I/O)
TStoppedArrêté par signal
ZZombieTerminé, non récupéré par parent
<Haute prioritéValeur nice négative
NBasse prioritéValeur nice positive
+Premier planProcessus au premier plan
sLeader sessionChef de session

3. Hiérarchie des processus

Processus racine

  • PID 1 : systemd (ou init sur anciens systèmes)
  • Responsable du démarrage et de la supervision des services
  • Tous les autres processus descendent de PID 1

Commandes d'exploration

CommandeUsageOptions utiles
pstreeArbre visuel des processus-p (PIDs), -u (utilisateurs)
ps --forestHiérarchie avec psIndentation visuelle
pgrepRecherche de PIDs-l (noms), -u user, -c (compter)
bash
# Exemples pratiques
$ pstree -p                           # Arbre avec PIDs
$ ps -ef --forest                     # Hiérarchie détaillée
$ pgrep -l firefox                    # PIDs et noms Firefox
$ pgrep -c bash                       # Compter processus bash

4. La commande top - Surveillance temps réel

En-tête système

top - 14:23:45 up 5 days, 3:21, 2 users, load average: 0.52, 0.48, 0.45
Tasks: 245 total,   1 running, 244 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.2 us,  2.1 sy,  0.0 ni, 92.1 id,  0.3 wa,  0.0 hi,  0.3 si,  0.0 st
MiB Mem :  15873.4 total,   2341.2 free,   8234.1 used,   5298.1 buff/cache

Interprétation load average

  • 0.52, 0.48, 0.45 : Charge moyenne sur 1, 5 et 15 minutes
  • < nombre_de_CPU : Système peu chargé
  • = nombre_de_CPU : Système à pleine charge
  • > nombre_de_CPU : Système surchargé

5. Signaux et terminaison de processus

Signaux principaux

SignalNuméroNomDescriptionInterceptable
SIGHUP1HangupRechargement configOui
SIGINT2InterruptInterruption (Ctrl+C)Oui
SIGQUIT3QuitQuitter avec core dumpOui
SIGKILL9KillTerminaison forcéeNon
SIGTERM15TerminateTerminaison propre (défaut)Oui
SIGSTOP17/19StopPause (Ctrl+Z)Non
SIGCONT18/20ContinueReprendre après pauseNon

Commande kill

bash
# Syntaxes équivalentes pour SIGTERM (15)
$ kill 1234                           # Signal par défaut
$ kill -15 1234                       # Par numéro
$ kill -TERM 1234                     # Par nom complet
$ kill -SIGTERM 1234                  # Avec préfixe SIG

# Terminaison forcée
$ kill -9 1234                        # SIGKILL
$ kill -KILL 1234                     # Par nom

# Rechargement configuration
$ kill -HUP 1234                      # SIGHUP
$ kill -1 1234                        # Par numéro

Commande killall

Envoie un signal à tous les processus portant un nom donné.

OptionUsageExemple
-iMode interactifkillall -i firefox
-u userUtilisateur spécifiquekillall -u www-data php
-qMode silencieuxkillall -q processus
-vMode verbeuxkillall -v firefox
bash
# Exemples pratiques
$ killall firefox                     # Tous les Firefox
$ killall -9 firefox                  # Terminaison forcée
$ killall -u www-data apache2         # Processus utilisateur spécifique
$ killall -o 1h backup                # Processus de + d'1 heure

6. Gestion des priorités

Concept de priorité

  • Valeurs nice : -20 (priorité maximale) à +19 (priorité minimale)
  • Défaut : 0
  • Plus la valeur est basse, plus la priorité est élevée
  • Seul root peut attribuer des valeurs négatives

Commande nice

Lance un nouveau processus avec une priorité spécifiée.

bash
# Syntaxes
$ nice -n 10 commande                 # Priorité basse (+10)
$ nice -10 commande                   # Forme courte
$ nice -n -5 commande                 # Haute priorité (root requis)

# Exemples pratiques
$ nice -n 19 tar czf backup.tar.gz /data    # Sauvegarde non prioritaire
$ nice -n 15 ffmpeg -i input.mp4 output.mp4 # Encodage vidéo
$ sudo nice -n -10 database_server           # Serveur prioritaire

Commande renice

Modifie la priorité d'un processus existant.

bash
# Par PID
$ renice 10 -p 1234                   # Baisser priorité
$ sudo renice -5 -p 1234              # Augmenter priorité

# Par utilisateur/groupe
$ renice 10 -u username               # Tous les processus utilisateur
$ renice 10 -g groupname              # Tous les processus groupe

# Exemples pratiques
$ renice 19 -p $(pgrep firefox)       # Firefox moins prioritaire
$ sudo renice -10 -p $(pgrep mysqld)  # Base de données prioritaire

7. Processus en arrière-plan

Lancement en arrière-plan

MéthodeSyntaxeUsage
&commande &Arrière-plan simple
nohupnohup commande &Survit à la déconnexion
disowncommande & ; disownDétacher du shell
bash
# Exemples
$ firefox &                           # Lancer Firefox en arrière-plan
$ nohup ./script.sh > output.log 2>&1 &   # Script persistant
$ python server.py & ; disown         # Serveur détaché

Gestion des jobs

CommandeActionUsage
jobsLister jobs actifsVoir statut des tâches
fg %1Premier planRamener job 1
bg %1Arrière-planContinuer job 1 en arrière-plan
kill %1Tuer jobTerminer job 1
Ctrl+ZSuspendreMettre en pause
bash
# Workflow typique
$ ./long_process &                    # [1] 12345
$ jobs                                # Voir les jobs
$ fg %1                               # Ramener au premier plan
# Ctrl+Z                              # Suspendre
$ bg %1                               # Continuer en arrière-plan
$ kill %1                             # Terminer

8. Exemples d'administration pratique

Surveillance système

bash
# Processus gourmands
$ ps aux --sort=-%cpu | head -20      # Top CPU
$ ps aux --sort=-%mem | head -20      # Top mémoire
$ ps -eo pid,etime,cmd --sort=-etime | head -10  # Plus anciens

# Surveillance continue
$ top -d 1                            # Rafraîchissement rapide
$ watch -n 1 "ps aux | grep httpd"    # Surveiller Apache

Nettoyage système

bash
# Processus anciens
$ ps -eo pid,etime,cmd --sort=-etime | head -20  # Identifier anciens

Optimisation performance

bash
# Réduire priorité processus gourmands
$ renice 19 -p $(pgrep firefox)

# Lancer tâches lourdes avec basse priorité
$ nice -n 19 backup_script.sh &

# Surveiller impact
$ top -p $(pgrep process_name)

10. Formats personnalisés avec ps

Colonnes utiles pour le monitoring

bash
# Format administration système
$ ps -eo pid,ppid,user,%cpu,%mem,vsz,rss,etime,stat,cmd

# Format surveillance performance
$ ps -eo pid,user,%cpu,%mem,time,comm --sort=-%cpu

# Format débogage
$ ps -eo pid,ppid,sid,tty,stat,cmd --forest

11. Dépannage courant

Processus qui ne répond plus

bash
# 1. Identifier le processus
$ ps aux | grep nom_processus

# 2. Vérifier l'état
$ ps -o pid,stat,cmd -p PID

# 3. Essayer SIGTERM
$ kill -TERM PID

# 4. Si bloqué en état D (disk wait), attendre ou redémarrer

Processus zombies

bash
# Trouver et redémarrer le parent
$ ps -o pid,ppid,stat,cmd | grep "Z"
$ kill -TERM PPID_DU_PARENT

Système lent

bash
# Identifier les coupables
$ ps aux --sort=-%cpu | head -10      # CPU
$ ps aux --sort=-%mem | head -10      # Mémoire
$ ps -eo pid,etime,cmd --sort=-etime | head -10  # Anciens processus

.