Devmind.
Menu

Apprendre, à votre rythme

Tous les cursus sont accessibles sans compte.

Chapitre 11 / Notion

Processus, jobs et signaux

« Le process est bizarre » : zombie ?

◷ 15 minutesTravail sur votre machine

Prérequis (cursus dev) : programme et processus, observer les processus.

Pourquoi

« Le process est bizarre » : zombie ? bloqué ? qui est son père ? Les signaux sont le langage du contrôle — TERM vs KILL n'est pas une nuance, c'est la différence entre arrêter proprement et corrompre.

Concepts

  • Hiérarchie : tout process a un père (PPID, ps -ef --forest). Tuer le père orphelinise (adoptés par init/systemd). Comprendre l'arbre avant de tuer.
  • États : R (tourne), S (dort, normal), D (I/O ininterruptible — disque/NFS bloqué, intuable même en -9 !), Z (zombie : mort, père qui n'a pas lu son statut).
  • Signaux : TERM (15, « termine proprement » — handler possible) puis KILL (9, exécution immédiate, sans handler — dernier recours). HUP (1, « recharge ta conf » pour les daemons), USR1/USR2 (custom : dump, rotation, debug selon l'app).
  • Jobs shell : & (fond), Ctrl-Z + bg/fg, disown/nohup (survit au terminal). En prod : systemd, pas nohup (cf. DevOps 1.2) — mais en debug, utile.

Exemple : tuer proprement

ps -o pid,ppid,stat,cmd -p 1234   # qui, père, état, quoi
kill 1234                          # TERM d'abord, attendre 10 s
kill -0 1234 2>/dev/null || echo "mort"   # tester sans signaler !
kill -9 1234                       # KILL en dernier recours seul

Cas réel

kill -9 direct sur Postgres en écriture : shared buffers perdus, recovery au redémarrage + risque de corruption. TERM (checkpoint propre) aurait suffi. Règle : -9 = aveu d'échec à expliquer, jamais réflexe.

Pièges

  • État D : kill -9 ne marche PAS (I/O bloquée). Soigner le stockage/réseau, pas le process.
  • Zombies : on ne tue pas un zombie (déjà mort) — on s'occupe du père qui ne récolte pas.
  • killall par nom approximatif : killall java tue tout. pkill -f précis + vérification avant.

À retenir

Arbre d'abord, TERM puis KILL (jamais l'inverse), D = intenable, zombies = problème du père.

Pas de correction en ligneConfrontez votre code aux résultats attendus du cours.