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 ; permettant ainsi aux applications et aux utilisateurs d'obtenir un aperçu du système du point du vue du noyau.

Le répertoire /proc/ contient 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. Telle est la raison pour laquelle on fait souvent référence à /proc/ en tant que 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 concernant la date et l'heure des fichiers virtuels reflètent la date et l'heure actuelles, ce qui prouve qu'ils sont constamment mis à jour.

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 et sur les interfaces.

Dans un souci 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 de processus 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 à un grand nombre d'informations sur le système. Par exemple, pour afficher le type d'unité centrale dont dispose l'ordinateur, tapez cat /proc/cpuinfo et une sortie semblable à l'extrait ci-dessous s'affichera :

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

Lors de l'affichage de différents fichiers virtuels du système de fichiers /proc/, certaines informations sont facilement compréhensibles alors que d'autres ne le sont pas. C'est en partie la raison poue laquelle il existe des utilitaires dont la fonction consiste à extraire des données de fichiers virtuels pour les afficher ensuite 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

D'une manière générale, la plupart des fichiers virtuels du répertoire /proc/ sont en lecture-seule. Toutefois, certains peuvent être utilisés pour régler des paramètres dans le noyau. C'est le cas en particulier des 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 à la volée, tapez :

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

D'autres fichiers servent de commutateur binaire ou booléen. Par exemple, la saisie de cat /proc/sys/net/ipv4/ip_forward, renvoie 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 changer la valeur du fichier ip_forward en 1 afin que les paquets soient immédiatement réacheminés.

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 des fichiers de configuration du noyau qui sont disponibles dans /proc/sys/, consultez la Section 5.3.9.