Chapitre 5. Système de fichiers proc

Le noyau de Linux a deux fonctions principales : contrôler l'accès aux périphériques physiques de l'ordinateur d'une part et programmer à quel moment et de quelle façon les processus vont interagir avec ces périphériques d'autre part. Le répertoire /proc/ — également appelé le système de fichiers proc — contient une hiérarchie de fichiers spéciaux qui représentent l'état actuel du noyau ; cela permet aux applications ainsi qu'aux utilisateurs de scruter la perception du noyau du système.

Vous pouvez trouver dans le répertoire /proc/ de nombreuses informations relatives à la configuration matérielle du système et aux processus en cours d'exécution. De plus, certains des fichiers situés dans l'arborescence du répertoire /proc/ peuvent être manipulés par les utilisateurs ainsi que par les applications afin de transmettre des changements de configuration au noyau.

5.1. Système de fichiers virtuel

Sous Linux, toutes les données sont stockées en tant que 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 nommé fichier virtuel. C'est pour cette raison que /proc/ est souvent désigné sous le nom de système de fichiers virtuel.

Ces fichiers virtuels ont des qualités uniques. La plupart d'entre eux ont une taille égale à zéro octet ; pourtant, lorsqu'on les affiche, on constate qu'ils contiennent parfois une grande quantité d'informations. De plus, la plupart du temps, les paramètres date et heure des fichiers virtuels reflètent la date et l'heure actuelles et montrent ainsi le fait qu'ils sont mis à jour continuellement.

Des fichiers virtuels tels que /proc/interrupts, /proc/meminfo, /proc/mounts et /proc/partitions fournissent un aperçu du matériel d'un système à un moment donné. D'autres tels que le fichier /proc/filesystems et le répertoire /proc/sys/ fournissent des informations sur la configuration du système ainsi que des interfaces.

À des fins d'organisation, les fichiers qui contiennent des informations sur un sujet similaire sont groupés dans des répertoires et sous-répertoires virtuels. Par exemple, /proc/ide/ contient des informations se rapportant à tous les périphériques IDE. De même, les répertoires 'process' contiennent des données concernant tous les processus en cours d'exécution sur le système.

5.1.1. Affichage de fichiers virtuels

En appliquant les commandes cat, more ou less aux fichiers du répertoire /proc/, les utilisateurs ont immédiatement accès à une très importante source d'informations sur le système. Par exemple, pour afficher le type d'unité centrale dont dispose l'ordinateur, tapez cat /proc/cpuinfo et vous obtiendrez une sortie semblable à l'extrait ci-dessous :

processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 5
model		: 9
model name	: AMD-K6(tm) 3D+ Processor
stepping	: 1
cpu MHz		: 400.919
cache size	: 256 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr
bogomips	: 799.53

Lorsque vous affichez différents fichiers virtuels dans le système de fichiers /proc/ vous pouvez remarquer que certaines des informations sont facilement compréhensibles tandis que d'autres sont codées. C'est en partie pour cela qu'existent des utilitaires dont la fonction consiste à récupérer des données de fichiers virtuels et de les afficher de façon compréhensible. Parmi ces utilitaires figurent par exemple : lspci, apm, free, et top.

NoteRemarque
 

Certains des fichiers virtuels du répertoire /proc/ ne peuvent être lus que par l'utilisateur root.

5.1.2. Modification de fichiers virtuels

En général, la plupart des fichiers virtuels du répertoire /proc/ sont en lecture-seule. Certains peuvent toutefois être utilisés pour régler les paramètres dans le noyau. Cela vaut particulièrement pour les fichiers du sous-répertoire /proc/sys/.

Pour modifier la valeur d'un fichier virtuel, utilisez la commande echo et le signe supérieur (>) afin de réacheminer la nouvelle valeur vers le fichier. Par exemple, pour modifier votre nom d'hôte rapidement, vous pouvez taper :

echo www.example.com > /proc/sys/kernel/hostname 

D'autres fichiers servent de commutateur binaire ou booléen. Par exemple, si vous tapez cat /proc/sys/net/ipv4/ip_forward, vous obtiendrez comme sortie un 0 ou un 1. Le 0 indique que le noyau ne réachemine pas les paquets réseau. En utilisant la commande echo pour modifier la valeur du fichier ip_forward en 1, vous pouvez déclencher immédiatement le réacheminement de paquets.

TuyauAstuce
 

La commande /sbin/sysctl permet également de modifier les paramètres du sous-répertoire /proc/sys/. Pour obtenir davantage d'informations sur cette commande, reportez-vous à la Section 5.4.

Pour obtenir une liste de certains fichiers de configuration du noyau disponibles dans /proc/sys/, consultez la Section 5.3.9.