8 - Le répertoire /proc en détail
Le répertoire /proc est l'un des aspects les plus fascinants de Linux. C'est une fenêtre ouverte sur le cerveau du système.
8.1 - Qu'est-ce que /proc exactement ?
Un système de fichiers virtuel :
- Les fichiers dans /proc n'existent pas physiquement sur votre disque dur
- Ils sont créés à la volée par le noyau Linux quand vous les lisez
- Si vous regardez leur taille, elle affiche souvent 0 octets
- Ils disparaissent quand vous éteignez l'ordinateur
Pourquoi est-ce intéressant ? : C'est comme une conversation directe avec le système d'exploitation. Au lieu d'avoir des outils complexes, il suffit de lire des fichiers texte.
8.2 - Les fichiers d'informations système
8.2.1 - /proc/cpuinfo - Informations sur votre processeur
Ce que vous y trouvez :
- Modèle du processeur
- Nombre de cœurs
- Fréquence (vitesse)
- Fonctionnalités supportées
Comment le lire :
- cat /proc/cpuinfo
- Exemple de ce que vous verrez :
- processor : 0
- model name : Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz
- cpu MHz : 3600.000
- cache size : 12288 KB
- cpu cores : 8
Utilité pratique : Pour vérifier quel processeur vous avez sans ouvrir le boîtier ou chercher dans les menus système.
8.2.2 - /proc/meminfo - État de la mémoire RAM
Ce que vous y trouvez :
- Mémoire totale
- Mémoire disponible
- Mémoire utilisée
- Mémoire cache
- Mémoire swap (fichier d'échange)
Comment le lire :
- cat /proc/meminfo
Exemple de contenu :
- MemTotal: 16384000 kB
- MemFree: 2048000 kB
- MemAvailable: 8192000 kB
- Buffers: 512000 kB
- Cached: 4096000 kB
- SwapTotal: 8192000 kB
- SwapFree: 8000000 kB
Utilité pratique : Pour savoir combien de RAM vous avez et combien est utilisée. Les outils graphiques lisent ce fichier !
8.2.3 - /proc/version - Version du système
Ce que vous y trouvez :
- Version du noyau Linux
- Version du compilateur utilisé pour le créer
- Date de compilation
Comment le lire :
- cat /proc/version
Exemple :
- Linux version 6.5.0-14-generic (gcc version 13.2.0) #14-Ubuntu SMP Mon Oct 2 10:34:12 UTC 2023
- Utilité pratique : Pour connaître votre version exacte du noyau Linux.
8.2.4 - /proc/uptime - Temps de fonctionnement
Ce que vous y trouvez :
- Depuis combien de temps l'ordinateur tourne
- Temps passé en idle (inactivité)
Comment le lire :
- cat /proc/uptime
Exemple :
- 90 1234567.89
- Le premier nombre : secondes depuis le dernier démarrage (ici environ 4 jours)
Utilité pratique : Pour savoir depuis combien de temps votre machine tourne sans redémarrage.
8.2.5 - /proc/loadavg - Charge système
Ce que vous y trouvez :
- La charge moyenne du système sur 1, 5 et 15 minutes
- Nombre de processus actifs
Comment le lire :
- cat /proc/loadavg
Exemple :
- 52 0.58 0.59 2/891 12345
- 52 : charge moyenne sur 1 minute
- 58 : charge moyenne sur 5 minutes
- 59 : charge moyenne sur 15 minutes
- 2/891 : 2 processus actifs sur 891 au total
Interprétation : Sur un système à 4 cœurs, une charge de 4.0 signifie que tous les cœurs sont occupés. Une charge de 0.5 signifie que le système est peu sollicité.
8.2.6 - /proc/filesystems - Systèmes de fichiers supportés
Ce que vous y trouvez : La liste de tous les types de systèmes de fichiers que votre noyau peut lire/écrire.
Comment le lire :
- cat /proc/filesystems
Exemple :
- nodev sysfs
- nodev proc
- ext4
- ext3
- vfat
- ntfs
- nodev tmpfs
Utilité pratique : Pour savoir si votre système peut lire des disques NTFS (Windows), exFAT (clés USB modernes), etc.
8.2.7 - /proc/partitions - Partitions de disque
Ce que vous y trouvez :
- Tous vos disques durs et leurs partitions
- Leur taille en blocs
Comment le lire :
- cat /proc/partitions
Exemple :
- major minor #blocks name
- 8 0 500107608 sda
- 8 1 524288 sda1
- 8 2 499582976 sda2
- 8 16 250059096 sdb
- 8 17 250058752 sdb1
- sda : premier disque dur
- sda1, sda2 : partitions de ce disque
- sdb : deuxième disque dur
Utilité pratique : Pour identifier rapidement vos disques et partitions.
8.2.8 - /proc/devices - Pilotes de périphériques chargés
Ce que vous y trouvez : Les pilotes (drivers) actuellement chargés dans le noyau, séparés en :
- Character devices (périphériques caractères) : clavier, souris
- Block devices (périphériques blocs) : disques durs
Comment le lire : cat /proc/devices
8.2.9 - /proc/modules - Modules du noyau chargés
Ce que vous y trouvez : La liste de tous les modules (morceaux de code) chargés dans le noyau.
Comment le lire :
- cat /proc/modules
Exemple :
- nvidia 12345678 0 - Live 0xffffffffc0000000
- bluetooth 98765 0 - Live 0xffffffffc1000000
Utilité pratique : Pour vérifier si le pilote de votre carte graphique ou WiFi est chargé.
8.3 - Les répertoires numérotés - Les processus
Structure : /proc/[PID]
Chaque processus (programme en cours d'exécution) a son propre dossier dans /proc, nommé par son PID (Process ID, un numéro unique).
Exemples :
- /proc/1 : le processus init/systemd (premier processus au démarrage)
- /proc/1234 : le processus avec l'ID 1234
- /proc/5678 : le processus avec l'ID 5678
/proc/[PID]/cmdline - Commande qui a lancé le processus
Comment le lire : cat /proc/1234/cmdline
Exemple :
- /usr/bin/firefox--new-window
- Vous voyez exactement quelle commande a démarré Firefox !
/proc/[PID]/status - État détaillé du processus
Ce que vous y trouvez :
- Nom du processus
- État (en cours, en attente, zombie)
- PID et PPID (parent process ID)
- Mémoire utilisée
- Utilisateur qui l'a lancé
Comment le lire :
cat /proc/1234/status
Exemple :
- Name: firefox
- State: S (sleeping)
- Pid: 1234
- PPid: 1000
- VmSize: 2048000 kB
- VmRSS: 512000 kB
Utilité pratique : Pour débugger un programme qui pose problème ou consomme trop de mémoire.
/proc/[PID]/fd/ - Fichiers ouverts par le processus
Ce que vous y trouvez : Tous les fichiers que ce processus a actuellement ouverts.
Comment le lire :
- ls -l /proc/1234/fd/
Exemple :
- lrwx------ 0 -> /dev/pts/0
- lrwx------ 1 -> /dev/pts/0
- lrwx------ 2 -> /dev/pts/0
- lrwx------ 3 -> /home/marie/document.txt
- lrwx------ 4 -> socket:[12345]
- 0, 1, 2 : entrée standard, sortie standard, erreur standard
- 3 : le processus a ouvert document.txt
- 4 : le processus utilise une connexion réseau
Utilité pratique : Pour savoir quel programme a verrouillé un fichier, ou pour comprendre ce qu'un processus fait.
/proc/[PID]/cwd - Répertoire de travail actuel
Ce que c'est : Un lien symbolique vers le dossier où le processus travaille actuellement.
Comment le lire :
- ls -l /proc/1234/cwd
Exemple :
- lrwxrwxrwx /home/marie/Documents
/proc/[PID]/exe - Exécutable du processus
Ce que c'est : Un lien symbolique vers le fichier exécutable qui a démarré ce processus.
Comment le lire :
- ls -l /proc/1234/exe
Exemple :
- lrwxrwxrwx /usr/bin/firefox
Utilité pratique : Pour savoir d'où vient exactement un processus mystérieux.
/proc/[PID]/environ - Variables d'environnement
Ce que vous y trouvez : Toutes les variables d'environnement du processus (comme PATH, HOME, USER).
Comment le lire : cat /proc/1234/environ | tr '\0' '\n'
- (La commande tr remplace les caractères nuls par des retours à la ligne pour rendre le résultat lisible)
- Exemple :
- HOME=/home/marie
- USER=marie
- PATH=/usr/bin:/bin
- LANG=fr_FR.UTF-8
8.4 - Fichiers système modifiables
Certains fichiers dans /proc/sys permettent de modifier (attention : avec précaution !) le comportement du système en temps réel !
/proc/sys/vm/swappiness - Contrôle de l'utilisation du swap
Ce que c'est : Un nombre entre 0 et 100 qui contrôle l'agressivité avec laquelle le système utilise le swap.
- : n'utiliser le swap qu'en dernier recours
- 100 : utiliser agressivement le swap
- Valeur par défaut : généralement 60
Comment le lire : cat /proc/sys/vm/swappiness
Comment le modifier temporairement : echo 10 | sudo tee /proc/sys/vm/swappiness
Utilité pratique : Si votre système devient lent à cause du swap, diminuer cette valeur peut aider.
/proc/sys/net/ipv4/ip_forward - Routage IP
Ce que c'est : Active (1) ou désactive (0) le routage de paquets réseau.
Comment le lire : cat /proc/sys/net/ipv4/ip_forward
Utilité pratique : Nécessaire si vous voulez transformer votre PC en routeur.
8.5 - Exemples pratiques d'utilisation
Trouver quel processus utilise beaucoup de CPU
- # Regarder la charge système
- cat /proc/loadavg
- # Trouver les processus gourmands
- top
- # ou
- htop
- Ces outils lisent /proc pour afficher les informations !
Voir quels programmes ont ouvert un fichier spécifique
- # Trouver tous les processus ayant ouvert video.mp4
- lsof /home/marie/video.mp4
- lsof interroge /proc/[PID]/fd/ pour tous les processus.
Surveiller l'utilisation de la RAM en temps réel
- watch -n 1 cat /proc/meminfo
- Actualise l'affichage toutes les secondes.
Identifier un processus mystérieux
- Imaginons que vous voyez un processus avec le PID 5678 et vous ne savez pas ce que c'est :
- # Quel est le nom ?
- cat /proc/5678/status | grep Name
- # D'où vient-il ?
- ls -l /proc/5678/exe
- # Quelle commande l'a lancé ?
- cat /proc/5678/cmdline
- # Quels fichiers utilise-t-il ?
- ls -l /proc/5678/fd/
Vérifier si votre système supporte la virtualisation
- cat /proc/cpuinfo | grep -E 'vmx|svm'
- Si quelque chose s'affiche, votre CPU supporte la virtualisation (Intel VT-x ou AMD-V).
8.6 - Points importants à retenir
Lecture seule (la plupart du temps) :
- La majorité des fichiers dans /proc sont en lecture seule
- Seuls certains fichiers dans /proc/sys peuvent être modifiés
Mis à jour en temps réel :
- Les informations sont toujours actuelles
- Pas besoin de rafraîchir ou recharger
Pas de risque pour le disque dur :
- Rien n'est écrit sur le disque
- Tout est en mémoire vive
Disparaît au redémarrage :
- Toutes les modifications sont perdues à l'extinction
- Pour des changements permanents, il faut modifier des fichiers de configuration dans /etc
Outils qui utilisent /proc
Beaucoup d'outils familiers lisent simplement /proc :
- top / htop : lit /proc/[PID]/stat pour chaque processus
- free : lit /proc/meminfo
- uptime : lit /proc/uptime et /proc/loadavg
- lsof : explore /proc/[PID]/fd/
- ps : parcourt tous les /proc/[PID]/
En conclusion :
- /proc est comme un tableau de bord transparent du système. Au lieu de cacher les informations derrière des interfaces complexes, Linux donne un accès direct sous forme de fichiers lisibles.
- C'est l'incarnation de la philosophie Linux : "tout est fichier", y compris l'état du processeur ou la liste des programmes en cours d'exécution.!