Polar Code 🎭

Command Palette

Search for a command to run...

11
Pièce N°11

Les Spectres et les Balles – Processus et Signaux

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 ssh
    

    Dé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). aux donne la vue la plus large.

  • top / htop : La surveillance en temps réel. top est le moniteur de base, austère. htop est 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.

Les Spectres et les Balles – Processus et Signaux | Faites entrer BASH | Learn To Code