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.!

 

 

Aucun commentaire