CaenHackYouAcademy
Administration Linux

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 nginx

Ici le maître (PPID 1) a lancé un worker, qui le déclare comme parent.

Lire la colonne STAT

CodeÉtatCe que ça veut dire
Rrunnings'exécute, ou attend son tour sur un cœur
Ssleepingattend un événement, réveillable par un signal
Duninterruptiblebloqué sur une E/S — ne répond à aucun signal
Zzombieterminé, mais son code de retour n'a pas été lu
Tstoppedsuspendu 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

SignalInterceptableUsage
SIGHUP1ouirelire la configuration sans redémarrer
SIGINT2ouice que Ctrl+C envoie
SIGTERM15ouiarrêt propre — c'est le défaut de kill
SIGKILL9nondernier recours
SIGSTOP19nonsuspendre, 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.

VérificationQuestion 1 / 3

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.

On this page