Processus et signaux
Observer un processus, comprendre son état, l'arrêter proprement.
Tout ce qui s'exécute est un processus, identifié par un PID et rattaché à
un parent, son PPID. Le premier de tous, PID 1, est systemd : il adopte
les processus dont le parent a disparu.
$ ps -o pid,ppid,stat,etime,comm -C nginx
PID PPID STAT ELAPSED COMMAND
1042 1 Ss 02:14:07 nginx
1043 1042 S 02:14:07 nginxIci le maître (PPID 1) a lancé un worker, qui le déclare comme parent.
Lire la colonne STAT
| Code | État | Ce que ça veut dire |
|---|---|---|
R | running | s'exécute, ou attend son tour sur un cœur |
S | sleeping | attend un événement, réveillable par un signal |
D | uninterruptible | bloqué sur une E/S — ne répond à aucun signal |
Z | zombie | terminé, mais son code de retour n'a pas été lu |
T | stopped | suspendu par Ctrl+Z ou SIGSTOP |
Les suffixes complètent l'état : s pour un chef de session, + pour un
processus au premier plan.
Choisir son signal
| Signal | N° | Interceptable | Usage |
|---|---|---|---|
SIGHUP | 1 | oui | relire la configuration sans redémarrer |
SIGINT | 2 | oui | ce que Ctrl+C envoie |
SIGTERM | 15 | oui | arrêt propre — c'est le défaut de kill |
SIGKILL | 9 | non | dernier recours |
SIGSTOP | 19 | non | suspendre, sans terminer |
kill -9 en premier réflexe est une mauvaise habitude. Le processus n'a
alors aucune chance de vider ses tampons, fermer ses fichiers ni relâcher ses
verrous — c'est ainsi qu'on récolte une base corrompue ou un .pid fantôme.
Envoie SIGTERM, laisse quelques secondes, et seulement ensuite SIGKILL.
Les pièges classiques
Un zombie est déjà mort : kill -9 sur lui ne sert strictement à rien. Il
n'occupe qu'une ligne dans la table des processus, en attendant que son parent
lise son code de retour. Le vrai coupable est le parent — c'est lui qu'il faut
signaler ou redémarrer.
Un processus en D ignore tous les signaux, SIGKILL compris. Il attend une
E/S qui ne revient pas : disque en panne, montage NFS injoignable. Chercher la
cause côté stockage est plus utile que d'insister avec kill.
Réponse unique
Quel signal `kill 1042` envoie-t-il, sans autre option ?
Indice · C'est le signal *poli*, celui qui laisse une chance au processus.
[ METTRE EN PRATIQUE ]
Suspendre, reprendre et arrêter un processus
3 étapes · 20 min · 100 XP
[ CETTE LEÇON DANS LES PARCOURS ]
- Cybersécuritéétape 2 / 13suivant — Menace, risque, vulnérabilité →
- Fondamentauxétape 15 / 18suivant — HTTP et le web →
- Fondations Linuxétape 2 / 4suivant — Images et couches →
- Ingénieur DevOpsétape 13 / 23suivant — Images et couches →