|
|
Ce document est disponible en: English Castellano ChineseGB Deutsch Francais Nederlands Russian Turkce Polish |
par Sandeep Grover <sandeep L´auteur: Sandeep Grover travaille pour Magma Design Automation en Inde -- Une entreprise à forte croissance spécialisée dans la Conception Électronique Automatisée (EDA en anglais).Pendant son temps libre, il explore les éléments fondamentaux de Linux, ainsi il espère un jour contribuer au noyau Linux! Traduit en Français par: Guy Passemard <g.passemard(at)free.fr> Sommaire:
|
Comprendre le Système de Fichiers /procRésumé:
Le noyau Linux fournit un mécanisme qui donne accès par une arborescence de fichiers aux informations internes et permet la modification des paramètres du noyau pendant son exécution gràce au système de fichiers /proc. Notre présentation ciblera l'architecture Intel x86; toutefois les concepts de base sont les mêmes pour toutes les plateformes Linux. |
Le sytème de fichiers /proc est un mécanisme qui est employé par le noyau et ses modules pour envoyer des informations aux processus (d'où le nom /proc). Ce pseudo système de fichiers vous permet d'interagir avec les structures de données internes au noyau, d'acquérir des informations utiles sur les processus, et de changer certains paramètres du noyau à la volée.A la différence des autres systèmes de fichiers, /proc est stocké en mémoire plutôt que sur disque. Si vous interrogez le fichier "/proc/mounts" (qui liste tous les systèmes de fichiers montés, comme la commande "mount"), vous devriez voir une ligne comme :
grep proc /proc/mounts
/proc /proc proc rw 0 0
Le noyau contrôle le système de fichiers /proc et cela sans dispositif sous-jacent. Parce que /proc contient principalement des indicateurs d'états conditionnés par le noyau, l'endroit le plus propice pour le stockage des informations est la mémoire, qui est aussi gérée par le noyau. Exécuter une commande 'ls -l' sur /proc montre que la plupart des fichiers on une longueur de 0 octets; cependant quand le fichier est visualisé, on aperçoit pas mal d'informations. Comment est-ce possible? Parce que le système de fichiers /proc, comme un système de fichiers normal, s'inscrit dans la couche système de fichier virtuel (VFS en anglais). Par contre, lorsque "VFS" fait des appels d'i-nodes adressant des fichiers/répertoires au système de fichiers /proc, ce dernier en réalité crée ces fichiers/répertoires à partir des informations contenues dans le noyau.
S'il n'est pas déjà monté, le système de fichiers /proc peut-être monté
avec la commande suivante :
mount -t proc proc /proc
La commande ci-dessus exécutée devrait monter correctement le système de fichier /proc. Lisez, s'il-vous-plaît, la page "man" pour plus de détails.Les fichiers /proc peuvent être utilisés pour accéder aux informations concernant l'état du noyau, les attributs du matériel, l'état de fonctionnement des processus etc. La plupart des fichiers du répertoire /proc permettent une vue, la plus récente, sur l'environnement physique du système. Bien que les fichiers /proc soient virtuels, ils peuvent être examinés à partir de n'importe quel éditeur ou de programmes comme "more", "less", "cat". Lorsque qu'un éditeur tente d'ouvrir un fichier virtuel, le fichier est en réalité créé immediatement avec des informations internes au noyau. Voici quelques résultats intéressants après interrogation de mon système.
$ ls -l /proc/cpuinfo -r--r--r-- 1 root root 0 Dec 25 11:01 /proc/cpuinfo
$ file /proc/cpuinfo
/proc/cpuinfo: empty
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 8
model name : Pentium III (Coppermine)
stepping : 6
cpu MHz : 1000.119
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
sep_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 mmx fxsr xmm
bogomips : 1998.85
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 8
model name : Pentium III (Coppermine)
stepping : 6
cpu MHz : 1000.119
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
sep_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 mmx fxsr xmm
bogomips : 1992.29
Le système de fichier /proc permet de rassembler des informations utiles
sur le système et le fonctionnement du noyau. Quelques
fichiers importants sont décrits ci-dessous:
Le système de fichiers /proc peut servir à l'extraction des informations sur tous les processus en cours d'exécution. Le répertoire /proc contient des sous-répertoires numérotés qui correspondent au numéro d'identification de processus (PID). Ainsi, pour chaque processus en cours d'exécution, il y a un sous-répertoire de /proc qui porte comme nom, le PID de chaque processus. Ces sous-répertoires contiennent des fichiers qui fournissent chacun des détails importants concernant l'état actuel et l'environnement d'un processus. Essayons de rechercher un processus en cours d'execution.
$ ps -aef | grep mozillaLa commande ci-dessus montre qu'il y a un processus en cours de Mozilla avec le PID 32558. Par correspondance, il devrait exister un sous-répertoire dans /proc portant le numéro 32558.
root 32558 32425 8 22:53 pts/1 00:01:23 /usr/bin/mozilla
$ ls -l /proc/32558Le fichier "cmdline" contient la commande invoquée pour démarrer le processus. Les variables d'environnement du processus sont incluses dans le fichier "environ". Le fichier "status" contient des informations actualisées sur l'état du processus. Parmi lesquelles, le numéro utilisateur (UID) et le numéro du groupe d'utilisateurs(GID) de l'utilisateur qui a lancé le processus, le numéro d'identification du processus parent (PPID) qui a instancié le PID, et l'état courant du processus "Sleeping" (dormant) ou "Running" (en cours). Dans chaque répertoire dédié à un processus se trouvent plusieurs liens symboliques. Ainsi "cwd" est le lien au répertoire courant de travail du processus, le lien "exe" pointe sur le programme en cours d'exécution par le processus, "root" est le lien du processus à son répertoire racine (normalement "/"). Le répertoire "fd" contient des liens aux descripteurs de fichiers utilisés par le processus. Uniquement pour les noyaux Linux SMP, "cpu" contient les plages de temps de processus affectées par CPU.
total 0
-r--r--r-- 1 root root 0 Dec 25 22:59 cmdline
-r--r--r-- 1 root root 0 Dec 25 22:59 cpu
lrwxrwxrwx 1 root root 0 Dec 25 22:59 cwd -> /proc/
-r-------- 1 root root 0 Dec 25 22:59 environ
lrwxrwxrwx 1 root root 0 Dec 25 22:59 exe -> /usr/bin/mozilla*
dr-x------ 2 root root 0 Dec 25 22:59 fd/
-r--r--r-- 1 root root 0 Dec 25 22:59 maps
-rw------- 1 root root 0 Dec 25 22:59 mem
-r--r--r-- 1 root root 0 Dec 25 22:59 mounts
lrwxrwxrwx 1 root root 0 Dec 25 22:59 root -> //
-r--r--r-- 1 root root 0 Dec 25 22:59 stat
-r--r--r-- 1 root root 0 Dec 25 22:59 statm
-r--r--r-- 1 root root 0 Dec 25 22:59 status
/proc/self est un sous-répertoire intéressant, il facilite
l'utilisation de /proc par un programme pour trouver des informations
sur ses propres processus. la commande /proc/self est un lien symbolique
au répertoire /proc qui correspond au processus accédant au répertoire /proc.
La plupart des fichiers /proc précédemment présentés sont uniquement en lecture.
Toutefois, à l'intérieur du système de fichiers /proc il est prévu d'interagir
avec le noyau à partir de fichiers en lecture-écriture. L'écriture
dans ces fichiers peut changer l'état du noyau, ainsi il faut les modifier avec
beaucoup de précautions. Le répertoire /proc/sys est celui qui contient tous
les fichiers en lecture-écriture ce qui permet de modifier le fonctionnement du
noyau.
/proc/sys/kernel - Ce répertoire contient les informations sur
le fonctionnement général du noyau. Le répertoire /proc/sys/kernel/{domainname, hostname}
héberge le nom de domaine et le nom d'hôte pour les ordinateurs du réseau. Les fichiers
correspondant peuvent être configurés pour modifier ces noms.
$ hostnameDonc, en modifiant les fichiers dans le système de fichiers /proc, nous pouvons modifier le nom de l'ordinateur hôte. Beaucoups d'autres fichiers configurables existent dans le répertoire /proc/sys/kernel/. Bien qu'il soit impossible de lister tous les fichiers concernés ici, le lecteur devrait observer ce répertoire en détail.
machinename.domainname.com
$ cat /proc/sys/kernel/domainname
domainname.com
$ cat /proc/sys/kernel/hostname
machinename
$ echo "new-machinename" > /proc/sys/kernel/hostname
$ hostname
new-machinename.domainname.com
$ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_allLa commande 'echo' ci-dessus cachera votre ordinateur du réseau car elle désactive les messages vers icmp_echos. L'ordinateur hôte ne répondra pas aux appels "ping" venant d'un autre ordinateur.
$ ping machinename.domainname.comLa commande suivante reconfigure la valeur par défaut:
no answer from machinename.domainname.com
$ echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_allIl y a bien d'autres sous-répertoires dans /proc/sys qui peuvent être configurés pour effectuer un changement des propriétés du noyau. Voir [1], [2] pour plus amples informations
Le système de fichiers /proc assure une interface aux éléments internes du système Linux.
Il assiste l'administrateur afin de connaître des états et de configurer
des périphériques et des processus sur une machine. La compréhension et l'utilisation
de ce système de fichiers sont primordiales pour bien se servir du système d'exploitation
Linux.
Site Web maintenu par l´équipe d´édition LinuxFocus
© Sandeep Grover "some rights reserved" see linuxfocus.org/license/ http://www.LinuxFocus.org |
Translation information:
|
2005-01-21, generated by lfparser version 2.52