Processus, Signaux & Contrôle de Tâches

Linux
Système & Réseau
Comprendre l’anatomie d’un processus (PID, PPID, UID), observer l’activité système (ps, pstree, top) et piloter les signaux (kill, killall, Ctrl+C, Ctrl+Z, fg, bg).

Tant qu’un programme (comme /bin/ls ou /usr/sbin/nginx) repose sur le disque dur, ce n’est qu’un fichier inerte. Dès que le noyau Linux le charge en mémoire vive (RAM) pour l’exécuter, il prend vie sous la forme d’une instance dynamique appelée un processus.

🧬 Anatomie et Isolation d’un Processus

Chaque processus actif sur le système est identifié par cinq attributs fondamentaux gérés par le noyau :

La Carte d’Identité du Processus
  1. CMD (Exécutable) : Le nom de la commande et les arguments ayant servi à le lancer.
  2. UID (Propriétaire) : L’utilisateur qui a lancé le processus (détermine quels fichiers il a le droit d’ouvrir).
  3. PID (Process ID) : Le numéro unique attribué au processus par le noyau.
  4. PPID (Parent Process ID) : Le numéro PID de son processus père (par exemple, votre shell bash est le père des commandes que vous tapez ; le tout premier processus au démarrage porte le PID 1).
  5. État (State) : En exécution (Running), en attente (Sleeping), en pause (Stopped) ou terminé.
Isolation & Communication Inter-Processus

Par sécurité, chaque processus tourne dans une bulle de mémoire virtuelle isolée : un programme qui plante ne peut pas corrompre la mémoire d’un autre.

Les processus ne peuvent communiquer entre eux que via des mécanismes très spécifiques contrôlés par le noyau (IPC — Inter-Process Communication) :

  • Les tubes (Pipes |) et sockets réseau
  • Les signaux système (SIGINT, SIGTERM, SIGSTOP)
  • La mémoire partagée (Shared Memory)

🔭 Lister et Surveiller les Processus (ps, pstree, top)

Trois outils complémentaires permettent d’inspecter les processus qui tournent sur une machine :

Commande Mode de fonctionnement Ce qu’elle affiche
ps [-edf] Statique (Photo) Affiche la liste complète (-e) au format détaillé (-f) de tous les processus actifs à l’instant T (UID, PID, PPID, CMD).
pstree Statique (Arbre) Affiche l’arbre généalogique des processus depuis la racine PID 1, révélant qui a lancé quoi.
top Interactif (Direct) Tableau de bord en temps réel classant les processus par consommation CPU/RAM (q pour quitter, h pour l’aide).

⚡ Interagir avec les Processus : Signaux & Contrôle Clavier

Sous Linux, on ne « force pas la fermeture d’une fenêtre » : on envoie un signal numérique ou nommé au processus pour lui ordonner de s’arrêter, de se mettre en pause ou de recharger sa configuration.

Machine à États d’un Processus & Signaux UNIX

🎯 Commandes kill, killall et Signaux Clavier

Envoyer un Signal (kill & killall)

Contrairement à son nom anglais trompeur, kill sert à envoyer n’importe quel signal à un processus :

  • kill pid [-signal] : Cible un processus précis par son numéro PID. Par défaut (sans option), elle envoie SIGTERM (-15), qui demande poliment au programme de sauvegarder son état avant de se fermer.
  • kill -9 pid (-SIGKILL) : L’arme ultime. Le noyau détruit immédiatement le processus sans lui laisser le temps de réagir.
  • killall nom [-s signal] : Tue d’un seul coup tous les processus portant ce nom (ex: killall nginx).
Contrôle au Clavier (Ctrl+C, Ctrl+Z, fg, bg)

Lorsque qu’une commande occupe votre terminal :

  • Ctrl + C (SIGINT) : Envoie le signal d’interruption pour arrêter immédiatement la commande en cours.
  • Ctrl + Z (SIGSTOP) : Met le processus en pause et vous rend la main sur le prompt.
  • bg (Background) : Relance le processus mis en pause en arrière-plan (vous pouvez continuer à taper d’autres commandes !).
  • fg (Foreground) : Ramène le processus d’arrière-plan au premier plan.
  • Ctrl + D (EOF) : Quitte la session et ferme le shell courant (équivalent à quit ou exit).

🧪 Simulateur Interactif : Console de Gestion des Processus

Sélectionnez une opération d’inspection ou d’interaction pour observer la réaction des processus dans le terminal :

Poste de Contrôle des Processus & Signaux

Sortie du Terminal Système