1️⃣1️⃣ Les Spectres et les Balles – Processus et Signaux
Le système est vivant. Pas d’un seul souffle, mais de milliers : les processus. Chaque commande lancée, chaque démon qui veille, est un fantôme occupé à sa tâche. Les voir (ps), les contrôler (kill), les envoyer en arrière-plan (&) ou les piéger (trap), c’est le pouvoir du maître des ombres. Un signal est une balle dans la nuque d’un processus. Ou un coup de sifflet pour le faire changer de cap.
11.1 Processus
-
ps: La liste des fantômes. La photo d’identité des processus.$ ps aux | grep -E "(ssh|nginx)" # Voir tous les processus, filtrer ceux contenant 'ssh' ou 'nginx' USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 742 0.0 0.1 72328 4212 ? Ss Mar04 0:01 /usr/sbin/sshd -D noir 4512 0.0 0.0 46248 1896 pts/0 S+ 02:17 0:00 grep --color=auto sshDécryptage rapide :
PID(l'identifiant, son numéro de matricule),TTY(le terminal qui le contrôle),STAT(son état : S=train de dormir, R=courir, Z=zombie, +=en premier plan).auxdonne la vue la plus large. -
top/htop: La surveillance en temps réel.topest le moniteur de base, austère.htopest son cousin amélioré, couleur, interactif. On y voit la fièvre du système (load average), les processus qui bouffent le CPU, la mémoire qui fond.$ top # Appuyez sur 'q' pour quitter, 'k' pour tuer un processus. $ htop # Bien plus lisible. Flèches pour naviguer, F9 pour envoyer un signal. -
Processus en arrière-plan (
&) : L’art de la discrétion. Lancer une tâche longue sans qu’elle vous bloque le terminal.$ ./scanner_reseau.sh > scan.log 2>&1 & # Lance le script en arrière-plan, redirige toute sa sortie vers un log. [1] 18954 # Le shell vous donne : [numéro de job] PID $ jobs # Voir les jobs en arrière-plan dans cette session. $ fg %1 # Ramener le job 1 au premier plan. $ bg %1 # Remettre le job 1 en arrière-plan s'il était suspendu (Ctrl+Z).
11.2 Signaux
Un signal est un interrupteur brutal. Une interruption logicielle. De SIGTERM (politique) à SIGKILL (balles réelles).
-
kill: L’émetteur de signaux. Ne tue pas toujours. Envoie juste un signal.$ kill -15 18954 # Envoie SIGTERM (15) au PID 18954. "Termine-toi proprement." $ kill -9 18954 # Envoie SIGKILL (9). Impossible à ignorer ou intercepter. Exécution sommaire. $ killall -HUP nginx # Envoie SIGHUP (1) à tous les processus nommés 'nginx'. Souvent pour recharger leur config. $ pkill -f "python3 script_secret" # Tue par motif dans la ligne de commande. -
trap: Le piège à signaux. Dans un script, vous pouvez intercepter les signaux pour faire un nettoyage de dernière seconde avant de mourir. Élégant. Professionnel.#!/bin/bash # script_sensible.sh fichier_verrou="/tmp/mon_verrou.pid" echo $$ > "$fichier_verrou" # Écrire son propre PID dans le verrou # Définition des pièges : nettoyer le verrou à la réception de SIGINT (Ctrl+C) ou SIGTERM nettoyer_et_sortir() { echo "[!] Signal reçu. Nettoyage des traces..." rm -f "$fichier_verrou" echo "[+] Verrou supprimé. Sortie." exit 1 } trap nettoyer_et_sortir SIGINT SIGTERM # Piège les signaux 2 (Ctrl+C) et 15 echo "[*] Script actif. PID = $$. Verrou créé. Appuyez sur Ctrl+C pour tester." echo "[*] Simulation d'un travail..." # Un travail long ou une attente sleep 60 # Nettoyage normal à la fin rm -f "$fichier_verrou" echo "[+] Travail terminé proprement."Lancez-le et faites
Ctrl+C. Le script nettoie avant de disparaître. C’est la marque d’un script qui ne laisse pas de cadavres derrière lui.
Les processus sont vos fantômes à votre service. Les signaux sont vos ordres brefs, vos balles ou vos sifflets. Savoir lequel envoyer, et quand, sépare le barbare qui kill -9 tout ce qui bouge, du chirurgien qui utilise SIGTERM puis trap pour une fin propre.
Contrôlez vos spectres. Sinon, ce sont eux qui finiront par vous hanter.