Le système /proc
Pourquoi parler de /proc ?
Quand on travaille avec Linux, il faut garder en tête que tout est fichier.
Ce principe fondateur veut dire que les périphériques, les configurations et même certaines parties de la mémoire sont accessibles comme si c’étaient de simples fichiers texte.
Parmi ces pseudo-arborescences, l’une des plus importantes est /proc.
Ce répertoire n’est pas stocké sur disque : il est créé directement par le noyau et reflète en permanence l’état de la machine et des processus.
En d’autres termes : /proc est une fenêtre ouverte sur ce que sait le noyau, et cette fenêtre se met à jour en temps réel.
Un pseudo-système de fichiers
On appelle /proc un pseudo-système de fichiers (procfs).
Il se distingue d’un répertoire “classique” par deux caractéristiques :
Pas de stockage persistant
Rien n’est gravé sur disque : tout est généré par le noyau à la volée.
Contenu dynamique
Chaque lecture correspond à une requête au noyau.
Si un processus s’arrête, son dossier dans
/procdisparaît instantanément.
/proc n’est donc pas une base de données statique, mais un miroir vivant de ce qui se passe dans le système.
Que trouve-t-on dans /proc ?
1. Fichiers système globaux
Ils donnent des informations générales sur la machine :
/proc/cpuinfo→ description des processeurs./proc/meminfo→ état de la mémoire (totale, libre, utilisée)./proc/uptime→ temps écoulé depuis le démarrage./proc/version→ version du noyau en cours.
Ces fichiers sont lisibles avec de simples commandes cat :
cat /proc/cpuinfo | head -n 5
cat /proc/meminfo | head -n 5
cat /proc/uptime
2. Répertoires par processus (PID)
Chaque processus actif possède un dossier dans /proc nommé selon son PID (Process ID).
Exemples :
/proc/1→ informations sur le premier processus (souventsystemdouinit)./proc/$$→ informations sur le shell courant./proc/self→ lien symbolique vers le processus qui fait la requête (pratique pour explorer son propre état).
À l’intérieur, on trouve des fichiers comme :
status→ état général du processus (nom, utilisateur, mémoire utilisée, etc.).cmdline→ commande exacte ayant lancé le processus.fd/→ liste des descripteurs de fichiers ouverts par le processus.
Exemple pratique :
ls /proc/self
cat /proc/self/status | head -n 10
Exemple de comparaison
De nombreuses commandes Linux ne font qu’afficher des informations déjà présentes dans /proc :
uptime
cat /proc/uptime
Ces deux commandes donnent la même information.
Lien avec les conteneurs
Dans un conteneur Docker, le répertoire /proc existe aussi, mais il est filtré par les namespaces :
Un conteneur ne voit que ses propres processus, pas ceux de l’hôte.
Les informations système visibles (
/proc/cpuinfo,/proc/meminfo) reflètent une vue partielle, correspondant aux limites imposées par les cgroups.
C’est ce qui explique que deux conteneurs isolés aient chacun l’impression d’être “seuls sur la machine”.
À retenir
/procest un système de fichiers virtuel créé par le noyau.Il fournit une vue temps réel sur l’état du système et des processus.
C’est un outil clé pour comprendre ce qui se passe dans une machine Linux… et pour comprendre comment Docker isole ses conteneurs.