Un aperçu de la hiérarchie Proc

Par Jay Fink jay_rf@exis.net Introduction

L'un des aspects les plus intéressants de certaines versions d'UN*X (Linux inclus) est la hiérarchie de fichiers /proc. Ce système de fichier virtuel présente quelques caractéristiques bien particulières, qui sont à la fois intéressantes et très utiles. Mais il peut aussi être dangereux voire désastreux. Cet article va traiter de /proc en trois parties~: une brève description de ce dont il s'agit~; ce à quoi il peut servir (ou ne pas servir)~; une carte détaillant la structure de /proc pour un noyau 2.2 et une architecture i686. Qu'est-ce que /proc~?

La hiérarchie /proc est la reflexion à l'identique de ce que le système garde en mémoire. Le but de /proc est de fournir un moyen simple d'obtenir l'information concernant les différents processus en cours d'exécution, information que maintient le noyau. La commande ps par exemple, lit directement /proc pour obtenir l'état des différents processus et du sytème. L'idée est de fournir cette information sous forme de fichiers aisément lisibles plutôt que de contraindre les programmes à effectuer des appels systèmes complexes.

Que peut faire /proc pour un administrateur ?

/proc peut être utilisé pour~: obtenir des statistiques~; obtenir de l'information sur le matériel~; modifier des paramètres alors que le système est en marche~; obtenir des informations sur la consommation mémoire et les performances.

On notera que dans la majorité des cas, l'information contenue dans /proc peut être obtenue par un appel système et vice-versa. Différents noyaux, différentes fonctions disponibles

Tous les noyaux ne permettent pas de manipuler l'information contenue dans /proc de la même manière. De plus les informations ne sont pas organisées selon la même hiérarchie d'une version à l'autre du noyau et d'une distribution à l'autre. Avertissement obligatoire

Comme il n'existe pas de définition précise et centralisée de ce que l'on peut faire et de ce que l'on ne peut pas faire avec /proc (principalement à cause des différences entre distributions), il n'y a aucun garde-fou hormis le fait que seul l'administrateur du système a le droit de modifier les fichiers qui s'y trouvent. Le plus facile pour se prémunir des mauvaises surprises lorsqu'on joue avec /proc est donc la vieille tactique~: faire une sauvegarde du noyau et user de bon sens.

Un exemple d'utilisation de /proc pour paramétrer des applications se trouve sur .

Une carte de /proc

Voici un tableau qui récapitule les fichiers et répertoires que l'on trouve dans /proc avec un noyau 2.2 et un processeur i686.
loadavgAverage of system load for the last 1, 5 and 15 minutes
uptimeTime in seconds since boot-up and total time used by processes
meminfoThe number of total, used and free bytes of memory and swap area(s)
kmsgKernel messages that have yet to be read in by the kernel
versionCurrent rev of the kernel and/or distribution (read from linux_banner
cpuinfoRecognized processor parameters
pciCurrent occupation of pci slots.
self/Information about processes currently accessing /proc
net/Descriptions about the network layer(s)
scsi/Contains files with information on individual scsi devices
mallocMonitoring provisions for kmalloc and kfree operations
kcoreA core dump for the kernel (memory snapshot)
modulesInformation regarding single loaded modules
statGeneral Linux Statistics
devicesInformation about kernel registered devices on the system
interruptsInterrupt assignment information
filesystemsExisting filesystem implementations
ksymsSymbols exported by the kernel
dmaOccupied DMA channels
ioportsCurrently occupied IO ports
smpIndividual information about CPU's if SMP is enabled
cmdlineCommand line parameters passed to the kernel at boot time
sys/Important kernel and network information
mtabCurrently mounted filesystems
mdMultiple device driver information (if enabled)
rcEnhanced real time clock (if enabled)
locksCurrently locked files

Répertoires numérotés

Le numéro de ces répertoires est celui du processus dont ils contiennent l'information.

Des résultats variables

Encore une fois, je tiens à souligner que /proc varie d'une version à l'autre du noyau, mais je vous souahite une bonne exploration.

Plus d'information

Voici une brève liste de sources supplémentaires d'informations (sans compter le LDP), qui entrent plus dans les détails~:

Copyright © 1999, Jay Fink - Paru dans le numéro~46 de la Linux Gazette, Octobre~1999.

Traduction française de Nicolas Chauvat.