Appearance
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
| État | Description | Utilisation CPU |
|---|---|---|
| Réveil (Wake up) | Phase d'initialisation | Non |
| Prêt (Ready) | En attente d'attribution CPU | Non |
| Actif (Running) | En cours d'exécution | Oui |
| Endormi (Sleeping) | En attente I/O (disque, réseau) | Non |
| Suspendu (Stopped) | Interrompu par signal (Ctrl+Z) | Non |
| Zombie | Terminé, en attente de récupération | Non |
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
| Commande | Description | Usage |
|---|---|---|
ps | Processus du terminal courant | Consultation rapide |
ps -e ou ps -A | Tous les processus | Vue globale |
ps -ef | Tous processus avec détails | Administration |
ps aux | Format complet | Le plus utilisé |
ps -u user | Processus d'un utilisateur | Filtrage par utilisateur |
Colonnes importantes
| Colonne | Signification | Utilité |
|---|---|---|
| PID | Process ID | Identification unique |
| PPID | Parent Process ID | Hiérarchie des processus |
| USER | Propriétaire | Sécurité et permissions |
| %CPU | Pourcentage CPU | Performance |
| %MEM | Pourcentage mémoire | Consommation mémoire |
| VSZ | Mémoire virtuelle (Ko) | Allocation mémoire |
| RSS | Mémoire résidente (Ko) | Mémoire physique utilisée |
| STAT | État du processus | État actuel |
| TIME | Temps CPU cumulé | Utilisation des ressources |
| CMD | Commande exécutée | Identification du programme |
Codes d'état (STAT)
| Code | État | Description |
|---|---|---|
| R | Running | En cours d'exécution ou prêt |
| S | Sleeping | Suspendu (attente événement) |
| D | Disk sleep | Sommeil non interrompable (I/O) |
| T | Stopped | Arrêté par signal |
| Z | Zombie | Terminé, non récupéré par parent |
| < | Haute priorité | Valeur nice négative |
| N | Basse priorité | Valeur nice positive |
| + | Premier plan | Processus au premier plan |
| s | Leader session | Chef 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
| Commande | Usage | Options utiles |
|---|---|---|
pstree | Arbre visuel des processus | -p (PIDs), -u (utilisateurs) |
ps --forest | Hiérarchie avec ps | Indentation visuelle |
pgrep | Recherche 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 bash4. 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/cacheInterpré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
| Signal | Numéro | Nom | Description | Interceptable |
|---|---|---|---|---|
| SIGHUP | 1 | Hangup | Rechargement config | Oui |
| SIGINT | 2 | Interrupt | Interruption (Ctrl+C) | Oui |
| SIGQUIT | 3 | Quit | Quitter avec core dump | Oui |
| SIGKILL | 9 | Kill | Terminaison forcée | Non |
| SIGTERM | 15 | Terminate | Terminaison propre (défaut) | Oui |
| SIGSTOP | 17/19 | Stop | Pause (Ctrl+Z) | Non |
| SIGCONT | 18/20 | Continue | Reprendre après pause | Non |
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éroCommande killall
Envoie un signal à tous les processus portant un nom donné.
| Option | Usage | Exemple |
|---|---|---|
-i | Mode interactif | killall -i firefox |
-u user | Utilisateur spécifique | killall -u www-data php |
-q | Mode silencieux | killall -q processus |
-v | Mode verbeux | killall -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 heure6. 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 prioritaireCommande 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 prioritaire7. Processus en arrière-plan
Lancement en arrière-plan
| Méthode | Syntaxe | Usage |
|---|---|---|
| & | commande & | Arrière-plan simple |
| nohup | nohup commande & | Survit à la déconnexion |
| disown | commande & ; disown | Dé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
| Commande | Action | Usage |
|---|---|---|
jobs | Lister jobs actifs | Voir statut des tâches |
fg %1 | Premier plan | Ramener job 1 |
bg %1 | Arrière-plan | Continuer job 1 en arrière-plan |
kill %1 | Tuer job | Terminer job 1 |
Ctrl+Z | Suspendre | Mettre 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 # Terminer8. 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 ApacheNettoyage système
bash
# Processus anciens
$ ps -eo pid,etime,cmd --sort=-etime | head -20 # Identifier anciensOptimisation 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 --forest11. 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émarrerProcessus zombies
bash
# Trouver et redémarrer le parent
$ ps -o pid,ppid,stat,cmd | grep "Z"
$ kill -TERM PPID_DU_PARENTSystè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