03 · Processus système

facile  ·  Durée estimée : 25 min

🎯 Objectif

Comprendre ce qu'est un processus, comment lister ceux qui tournent, surveiller leur consommation, et les arrêter proprement (ou de force). Ces commandes sont utilisées tous les jours par tout administrateur système.

Ouvre la console dans un autre onglet avant de commencer.

1. Qu'est-ce qu'un processus ?

Un processus est un programme en cours d'exécution. Chaque processus possède :

Le tout premier processus est init (ou systemd sur les systèmes modernes), avec le PID 1. Tous les autres descendent de lui.

2. Lister les processus — ps

ps (process status) affiche un instantané des processus.

ps

Sans option, ps n'affiche que les processus de ton terminal. Pour tout voir :

ps aux

Décryptage des colonnes

USER   PID  %CPU  %MEM   STAT  COMMAND
user   123   0.0   0.2   Ss    /bin/sh
user   456   1.5   3.1   Sl    /usr/bin/firefox
root     1   0.0   0.1   Ss    init

Variantes utiles :

ps -ef             # format UNIX, avec PPID
ps aux | grep sh   # filtrer sur un mot
ps -u user         # seulement l'utilisateur user
ps aux | grep mot est une combinaison extrêmement courante. Retiens-la.
Tape ps aux et repère ton propre shell (probablement /bin/sh). Note son PID.
Tu dois voir plusieurs lignes, dont au moins une avec /bin/sh ou ash en COMMAND.
3. Surveiller en temps réel — top

top affiche les processus en temps réel, classés par consommation CPU.

top

Informations affichées

top - 10:30:45 up 2:15, 1 user, load average: 0.05, 0.03, 0.01
Tasks:  45 total,   1 running,  44 sleeping,   0 zombie
%Cpu(s):  2.3 us,  0.5 sy,  0.0 ni, 97.2 id
MiB Mem :  191.9 total,   45.2 free,   89.1 used,   57.6 buff/cache

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM  COMMAND
  456 user      20   0   45120  12345   3456 S   1.5   3.1  firefox

Raccourcis clavier dans top

q       → quitter
M       → trier par mémoire
P       → trier par CPU (défaut)
k       → tuer un processus (demande le PID)
h       → aide
1       → voir chaque cœur CPU séparément
Sur Alpine, top est fourni par BusyBox. Il est plus simple que la version GNU, mais fonctionne pareil pour l'essentiel.
Lance top, appuie sur M pour trier par mémoire, puis q pour quitter.
Tu dois voir l'affichage défiler, puis revenir à ton shell après avoir tapé q.
4. Trouver un processus — pgrep

pgrep cherche un processus par nom et retourne son PID.

pgrep sh
Sortie : 123 (le PID du shell)

Avec le nom complet :

pgrep -l sh       # affiche PID + nom
pgrep -a sh       # affiche PID + ligne de commande complète
pgrep est plus pratique que ps aux | grep sh car il ne renvoie que le PID, directement exploitable.
Trouve le PID de ton shell avec pgrep -l sh.
La sortie doit afficher un nombre suivi de sh ou ash.
5. Lancer en arrière-plan — &

Ajouter & à la fin d'une commande la lance en arrière-plan, sans bloquer le terminal.

sleep 60 &
Sortie : [1] 789 → job n°1, PID 789

Voir les jobs en cours :

jobs
Sortie : [1]+ Running sleep 60 &

Ramener un job au premier plan :

fg %1

Suspendre le processus au premier plan :

Ctrl+Z

Reprendre en arrière-plan :

bg %1
Ctrl+Z suspend, Ctrl+C tue. C'est une distinction essentielle.
Lance sleep 120 &, vérifie avec jobs, puis tue-le avec kill %1.
jobs après le kill ne doit plus afficher le job.
6. Tuer un processus — kill

kill envoie un signal à un processus. Par défaut, c'est SIGTERM (15) — demande d'arrêt propre.

kill 1234

Si le processus résiste, forcer avec SIGKILL :

kill -9 1234

Les signaux principaux

SIGTERM (15)  → arrêt propre (défaut)
SIGKILL (9)   → arrêt immédiat, ne peut pas être ignoré
SIGHUP  (1)   → recharger la configuration
SIGSTOP (19)  → suspendre
SIGCONT (18)  → reprendre

Tuer par nom plutôt que par PID :

pkill sleep        # tue tous les processus nommés sleep
killall sleep      # idem (si disponible)
kill -9 ne laisse pas le processus se terminer proprement. Il peut laisser des fichiers temporaires ou des verrous. Utilise-le en dernier recours, après avoir essayé kill seul.
Lance sleep 300 &, récupère son PID avec jobs ou pgrep sleep, puis tue-le avec kill.
jobs ne doit plus afficher le processus. Si tu tapes pgrep sleep il ne doit plus rien retourner.
7. Mémoire et charge — free et uptime

free affiche l'utilisation mémoire :

free -h
Sortie : total 191M, used 89M, free 45M, available 57M

uptime affiche depuis combien de temps le système tourne et la charge moyenne :

uptime
Sortie : 10:30:45 up 2:15, 1 user, load average: 0.05, 0.03, 0.01

Comprendre la charge (load average)

Trois nombres : charge moyenne sur 1, 5 et 15 minutes. Sur un système mono-cœur, une charge de 1.0 signifie que le CPU est saturé. Sur 4 cœurs, c'est à partir de 4.0.

free -h + uptime + top = diagnostic rapide d'un système lent.
Lance free -h puis uptime. Note la valeur available et la charge 1 min.
Tu dois voir des valeurs chiffrées, pas d'erreur "command not found".
8. Qui est connecté — who et w
who       # utilisateurs connectés
w         # idem, avec ce qu'ils font
whoami    # juste mon nom
who → user tty1 2026-11-20 10:30
Sur un serveur multi-utilisateur, who et w permettent de voir qui est connecté et depuis quand. Utile pour repérer une connexion suspecte.
Tape who et w. Vérifie que tu apparais bien.
Au moins une ligne avec ton nom d'utilisateur.
🎓 Récapitulatif
ps aux             → tous les processus
ps aux | grep sh   → filtrer
top                → temps réel (q pour quitter)
pgrep sh           → PID d'un processus par nom
sleep 60 &         → lancer en arrière-plan
jobs               → jobs du terminal
fg %1 / bg %1      → premier plan / arrière-plan
Ctrl+Z / Ctrl+C    → suspendre / tuer
kill PID           → demander l'arrêt
kill -9 PID        → forcer l'arrêt
pkill nom          → tuer par nom
free -h            → mémoire
uptime             → charge système
who / w            → utilisateurs connectés

Table des signaux

15  SIGTERM   arrêt propre (défaut de kill)
9   SIGKILL   arrêt forcé
1   SIGHUP    recharger la config
19  SIGSTOP   suspendre
18  SIGCONT   reprendre
🏆 Défi final
  1. Lancer sleep 500 & en arrière-plan
  2. Lancer sleep 600 & aussi
  3. Vérifier avec jobs qu'ils tournent
  4. Trouver leurs PID avec pgrep sleep
  5. Tuer le premier avec kill PID
  6. Forcer l'arrêt du second avec kill -9 PID
  7. Vérifier que jobs est vide
  8. Lancer top, observer, quitter avec q
  9. Vérifier la mémoire avec free -h
À la fin : pgrep sleep ne doit plus rien retourner, jobs non plus.
Tu viens d'utiliser les mêmes commandes qu'un administrateur système pour diagnostiquer et nettoyer un serveur. C'est la base du métier.
📚 Sommaire