Linux-Mandrake:
Guide de l'utilisateur
et Manuel de référence

MandrakeSoft

 
 
Janvier 2000
http://www.linux-mandrake.com


Suivant : Samba
Précédent : Le système de fichiers de Linux: ext2fs
Retour

(Retour à la table des matières)

Chapitre 5 : Le système de fichiers /proc


Le système de fichiers /proc est une spécificité de Linux. C'est un système de fichiers virtuel, et en tant que tel il ne prend aucun espace disque. C'est un moyen très pratique d'obtenir des informations sur le système, d'autant plus que la plupart des fichiers dans ce répertoire sont lisibles (enfin, avec un peu d'habitude). Beaucoup de programmes, en fait, collectent des informations depuis des fichiers de /proc, les formatent à leur façon puis les affichent. C'est le cas pour tous les programmes qui affichent des informations sur les processus, et nous en avons déjà vu quelques-uns (top, ps et autres). /proc est aussi une bonne source d'informations sur votre matériel, et de la même façon, bon nombre de programmes sont en fait des interfaces pour les informations contenues dans /proc.

Il existe également un sous-répertoire spécial, /proc/sys. Il permet de changer certains paramètres du noyau en temps réel ou d'en consulter.

Informations sur les processus

Si vous listez le contenu du répertoire /proc, vous verrez beaucoup de répertoires dont le nom est un nombre. Ce sont les répertoires contenant les informations sur tous les processus fonctionnant à l'instant donné sur le système:

$ ls -d /proc/[0-9]*
/proc/1/    /proc/302/  /proc/451/  /proc/496/  /proc/556/  /proc/633/
/proc/127/  /proc/317/  /proc/452/  /proc/497/  /proc/557/  /proc/718/
/proc/2/    /proc/339/  /proc/453/  /proc/5/    /proc/558/  /proc/755/
/proc/250/  /proc/385/  /proc/454/  /proc/501/  /proc/559/  /proc/760/
/proc/260/  /proc/4/    /proc/455/  /proc/504/  /proc/565/  /proc/761/
/proc/275/  /proc/402/  /proc/463/  /proc/505/  /proc/569/  /proc/769/
/proc/290/  /proc/433/  /proc/487/  /proc/509/  /proc/594/  /proc/774/
/proc/3/    /proc/450/  /proc/491/  /proc/554/  /proc/595/

Notez qu'en tant qu'utilisateur, vous ne pouvez (fort logiquement) afficher les informations que sur vos propres processus. Mettons-nous donc en tant que root et voyons quelle information est disponible depuis le processus 127:

$ su
Password:
$ cd /proc/127
$ ls -l
total 0
-r--r--r--    1 root     root            0 d    c 14 19:53 cmdline
lrwx------    1 root     root            0 d    c 14 19:53 cwd -> //
-r--------    1 root     root            0 d    c 14 19:53 environ
lrwx------    1 root     root            0 d    c 14 19:53 exe -> /usr/sbin/apmd*
dr-x------    2 root     root            0 d    c 14 19:53 fd/
pr--r--r--    1 root     root            0 d    c 14 19:53 maps|
-rw-------    1 root     root            0 d    c 14 19:53 mem
lrwx------    1 root     root            0 d    c 14 19:53 root -> //
-r--r--r--    1 root     root            0 d    c 14 19:53 stat
-r--r--r--    1 root     root            0 d    c 14 19:53 statm
-r--r--r--    1 root     root            0 d    c 14 19:53 status
$

Chaque répertoire contient les mêmes entrées. Voici une brève description de quelques-unes de ces entrées:

Si nous listons le contenu du répertoire fd, nous obtenons ceci:

$ ls -l fd
total 0
lrwx------    1 root     root           64 déc 16 22:04 0 -> /dev/console
l-wx------    1 root     root           64 déc 16 22:04 1 -> pipe:[128]
l-wx------    1 root     root           64 déc 16 22:04 2 -> pipe:[129]
l-wx------    1 root     root           64 déc 16 22:04 21 -> pipe:[130]
lrwx------    1 root     root           64 déc 16 22:04 3 -> /dev/apm_bios
lr-x------    1 root     root           64 déc 16 22:04 7 -> pipe:[130]
lrwx------    1 root     root           64 déc 16 22:04 9 -> /dev/console
$

C'est en fait la liste des descripteurs de fichiers ouverts par le processus. Chaque descripteur ouvert est matérialisé par un lien symbolique dont le nom est le numéro du descripteur, et qui pointe sur le fichier ouvert par le biais de ce descripteur[18]. Vous pouvez également remarquer les permissions des liens symboliques: c'est le seul endroit où elles ont un sens pour les liens symboliques, puisqu'elles sont le reflet des droits avec lesquels le fichier correspondant au descripteur a été ouvert.

Informations sur le matériel

Outre les répertoires des différents processus, /proc contient aussi une foule de renseignements sur le matériel présent sur votre machine. Une liste des fichiers du répertoire /proc donne ceci:

$ ls -d [a-z]*
apm      dma          interrupts  loadavg  mounts      rtc       swaps
bus/     fb           ioports     locks    mtrr        scsi/     sys/
cmdline  filesystems  kcore       meminfo  net/        self/     tty/
cpuinfo  fs/          kmsg        misc     partitions  slabinfo  uptime
devices  ide/         ksyms       modules  pci         stat      version
$

Par exemple, si nous regardons le contenu de interrupts, nous pouvons constater qu'il contient la liste des interruptions actuellement utilisées par le système, ainsi que le périphérique qui les occupe. De même, ioports contiendra la liste des plages d'entrée/sortie actuellement occupées, et enfin dma fait de même avec les canaux DMA. Donc, si vous voulez repérer un conflit, regardez le contenu de ces trois fichiers:

$ cat interrupts
           CPU0
  0:     127648          XT-PIC  timer
  1:       5191          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
  5:       1402          XT-PIC  xirc2ps_cs
  8:          1          XT-PIC  rtc
 10:          0          XT-PIC  ESS Solo1
 12:       2631          XT-PIC  PS/2 Mouse
 13:          1          XT-PIC  fpu
 14:      73434          XT-PIC  ide0
 15:      80234          XT-PIC  ide1
NMI:          0
$ cat ioports
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
0300-030f : xirc2ps_cs
0376-0376 : ide1
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial(auto)
1050-1057 : ide0
1058-105f : ide1
1080-108f : ESS Solo1
10c0-10cf : ESS Solo1
10d4-10df : ESS Solo1
10ec-10ef : ESS Solo1
$ cat dma
 4: cascade
$

Ou, plus simplement, utilisez la commande lsdev, qui regroupe les informations de ces trois fichiers et classe les informations par périphérique, ce qui est quand même nettement plus pratique[19]:

$ lsdev
Device            DMA   IRQ  I/O Ports
------------------------------------------------
cascade             4     2
dma                          0080-008f
dma1                         0000-001f
dma2                         00c0-00df
ESS                          1080-108f 10c0-10cf 10d4-10df 10ec-10ef
fpu                      13  00f0-00ff
ide0                     14  01f0-01f7 03f6-03f6 1050-1057
ide1                     15  0170-0177 0376-0376 1058-105f
keyboard                  1  0060-006f
Mouse                    12
pic1                         0020-003f
pic2                         00a0-00bf
rtc                       8  0070-007f
serial                       03f8-03ff
Solo1                    10
timer                     0  0040-005f
vga+                         03c0-03df
xirc2ps_cs                5  0300-030f
$

Une énumération complète des fichiers présents serait trop longue, néanmoins voici la description de quelques-uns d'entre eux:

Le sous-répertoire /proc/sys

Le rôle de ce sous-répertoire est de reporter différents paramètres du noyau, et de pouvoir changer en temps réel certains de ces paramètres. A la différence de tous les autres fichiers dans /proc, certains fichiers de ce répertoire sont accessibles en écriture, mais par root seulement.

Une liste des répertoires et fichiers présents serait trop longue, d'autant plus qu'ils dépendront en grande partie de votre système d'une part, et que la plupart des fichiers ne seront utiles que pour des programmes hautement spécialisés. Voici toutefois trois utilisations courantes de ce sous-répertoire:


Suivant : Samba
Précédent : Le système de fichiers de Linux: ext2fs
Retour

Copyright © 2000 MandrakeSoft