L’idée reçue
« Un programme lancé correspond toujours à un seul processus. »
Un service, un shell ou un outil peut créer plusieurs processus. Avant de tuer ou relancer quoi que ce soit, il faut comprendre leur parenté et leur groupe.
01Démarre l’arbre de processus
chmod +x module3-processes-software-lab.sh
./module3-processes-software-lab.sh setup
./module3-processes-software-lab.sh start
./module3-processes-software-lab.sh status
02Lis les identifiants
export LAB="/tmp/soria-linux-processes-$USER"
parent_pid=$(cat "$LAB/run/parent.pid")
ps -o user,pid,ppid,pgid,sid,stat,ni,etime,tty,cmd --forest -g "$(cat "$LAB/run/process-group.pgid")"
Champ
Signification
Question
PID
identifiant du processus
quel processus précis ?
PPID
PID du parent
qui l’a créé ?
PGID
groupe de processus
quel ensemble reçoit un signal collectif ?
SID
session
à quelle session appartient-il ?
03Observe les états
ps -o pid,ppid,stat,wchan:24,cmd -g "$(cat "$LAB/run/process-group.pgid")"
ps -eo stat= | cut -c1 | sort | uniq -c
Les états fréquents sont R pour runnable, S pour sommeil interruptible, D pour attente non interruptible, T pour stoppé et Z pour zombie.
04Relie ps et /proc
cat "/proc/$parent_pid/status" | sed -n '1,12p'
tr '