Introduction
Une idée fausse que nous devons dissiper est que le répertoire /proc
n’est pas un véritable dossier ( ou plus précisément, n’est pas un système de fichier à proprement parler) . Il s’agit d’un système de fichiers virtuel (une sorte dossier virtuel avec des fichiers virtuels). Le répertoire procfs contient des informations sur les processus et d’autres informations système. Il est mappé sur /proc
et est monté au moment du démarrage.
Sous Linux, toutes les données sont stockées sous forme de fichiers. La plupart des utilisateurs sont familiers avec les deux principaux types de fichiers : texte et binaire. Mais le répertoire
/proc
contient un autre type de fichier appelé fichier virtuel. C’est pour cette raison que le répertoire/proc
est souvent appelé système de fichiers virtuel.
$ ls /proc
1 7 bus cmdline filesystems loadavg mounts self sys uptime version_signature
6 97 cgroups cpuinfo interrupts meminfo net stat tty version
L’exécution de la commande cat sur l’un des fichiers de /proc
affichera son contenu.
/proc/meminfo
/proc/meminfo
contient un tas d’informations sur l’état actuelle de la mémoire de votre système. Par exemple la quantité totale disponible (MemTotal) et la quantité libre (MemFree).
$ cat /proc/meminfo
MemTotal: 32916852 kB
MemFree: 16792624 kB
Buffers: 34032 kB
Cached: 188576 kB
SwapCached: 0 kB
Active: 167556 kB
Inactive: 157876 kB
Active(anon): 103104 kB
Inactive(anon): 17440 kB
.....
.....
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 12280 kB
DirectMap4M: 897024 kB
/proc/{others files}
/proc/console
– Informations sur les consoles actuelles, y compris le tty./proc/devices
– Pilotes de périphériques actuellement configurés pour le noyau en cours d’exécution./proc/dma
– Informations sur les canaux DMA actuels./proc/fb
– Périphériques de tampon d’images./proc/filesystems
– Systèmes de fichiers actuels pris en charge par le noyau./proc/iomem
– Carte mémoire actuelle du système pour les périphériques./proc/ioports
– Régions de port enregistrées pour la communication entrée-sortie avec le périphérique./proc/loadavg
– Charge moyenne du système./proc/locks
– Fichiers actuellement verrouillés par le noyau./proc/misc
– Divers pilotes enregistrés pour divers périphériques majeurs./proc/modules
– Modules du noyau actuellement chargés./proc/mounts
– Liste de tous les montages utilisés par le système./proc/partitions
– Informations détaillées sur les partitions disponibles sur le système./proc/pci
– Informations sur chaque périphérique PCI./proc/stat
– Enregistrement ou diverses statistiques conservées depuis le dernier redémarrage./proc/swap
– Informations sur l’espace de pagination./proc/uptime
– Informations sur le temps de fonctionnement (en secondes)./proc/version
– Version du noyau, version de gcc et distribution Linux installée.
/proc/{PID}
Dans les répertoires /proc
, vous trouverez des dossiers numérotés. Ces numéros correspondent aux PID des processus en cours d’exécution.
$ ls /proc
1 7 ... ... ...
6 97 ... ... ...
Ici, par exemple, 4 processus sont en cours d’exécution portant les PIDs 1,7,6 et 97. En tapant la commande ls /proc/{pid}
il est possible d’afficher les fichiers et dossiers virtuels associés à un processus.
$ ls /proc/7
attr cmdline environ gid_map mountinfo net oom_score_adj setgroups statm uid_map
auxv comm exe limits mounts ns root smaps status
cgroup cwd fd maps mountstats oom_adj schedstat stat task
Voici une listes des fichiers les plus importants :
cmdline
– affiche la ligne de commande du lancement du processusmaps
– chaque ligne décrit une région de mémoire virtuelle contiguë dans un processus ou un thread.environ
– variables d’environnementfd
– descripteurs de fichierslimits
– contient des informations sur les limites du processusmounts
– informations connexescwd
– un lien vers le répertoire de travail actuel du processusexe
– lien vers l’exécutable du processusroot
– lien vers le répertoire de travail du processus
Si un processus souhaite accéder à ses propres informations sans connaître son PID, il peut utiliser le chemin
/proc/self
pour accéder à son répertoire.