Code Search for Developers
 
 
  

015.html from Gulus at Krugle


Show 015.html syntax highlighted

<HTML><HEAD><TITLE>Linux-Mandrake: Guide de l'utilisateur et Manuel de référence</TITLE>
<LINK REV=MADE HREF="mailto:info@mandrakesoft.com"></HEAD>
<BODY BGCOLOR="#ffffff"><center><font size="+5"><STRONG><table border="0"><tr><td><STRONG>Linux-Mandrake</STRONG>:</td></tr><tr><td>Guide de l'utilisateur</td></tr><tr><td>et Manuel de référence</td></tr></table></STRONG></font>

<p><font size="+2"><STRONG><table border="0"><tr><td><STRONG>MandrakeSoft</STRONG></td></tr></table></STRONG></font>

<p><STRONG><table border="0"><tr><td>&nbsp;</td></tr><tr><td>&nbsp;</td></tr><tr><td>Janvier 2000</td></tr><tr><td><CODE>http://www.linux-mandrake.com</CODE></td></tr><tr><td></td></tr></table></STRONG></center>
<hr><a href="016.html">Suivant&nbsp;: <STRONG>Samba</STRONG></a><br><a href="014.html">Précédent&nbsp;: Le système de fichiers de
<STRONG>Linux</STRONG>: <STRONG>ext2fs</STRONG></a><br><a href="../">Retour</a><br><hr><a href="000.html#toc"><font size="-1">(Retour à la table des matières)</font></a>


<H1><font size="+1"><a name="135">Chapitre 5&nbsp;: Le système de fichiers <CODE>/proc</CODE></a></font></H1><hr><p>Le système de fichiers <CODE>/proc</CODE> est une spécificité de
<STRONG>Linux</STRONG>. 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 <CODE>/proc</CODE>, 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 (<CODE>top</CODE>, <CODE>ps</CODE> et autres). <CODE>/proc</CODE> 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 <CODE>/proc</CODE>.

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


<H1><a name="136">Informations sur les processus</a></H1>

<p>Si vous listez le contenu du répertoire <CODE>/proc</CODE>, 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:

<p><font size="-4"><PRE>
$ 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/
</PRE></font>

<p>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 <CODE>root</CODE> et voyons quelle information est
disponible depuis le processus 127:

<p><font size="-4"><PRE>
$ 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 -&gt; //
-r--------    1 root     root            0 d    c 14 19:53 environ
lrwx------    1 root     root            0 d    c 14 19:53 exe -&gt; /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 -&gt; //
-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
$
</PRE></font>

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


<ul><li><STRONG><CODE>cmdline</CODE></STRONG>:  Ce (pseudo-)fichier contient l'intégralité de la
ligne de commande utilisée pour invoquer le processus. Elle n'est pas
formatée: il n'y a aucun espace entre le programme et ses arguments, et
il n'y a pas non plus de saut de ligne à la fin du fichier.
<li><STRONG><CODE>cwd</CODE></STRONG>:  Ce lien symbolique pointe sur le répertoire de travail
en cours ("current working directory" en anglais, d'où le nom)
du processus.
<li><STRONG><CODE>environ</CODE></STRONG>:  Ce fichier contient toutes les variables
d'environnement pour le processus, sous la forme <CODE>VARIABLE=valeur</CODE>.
De même que pour <CODE>cmdline</CODE>, la sortie n'est pas formatée du tout:
pas de saut de ligne pour séparer les différentes variables, et pas de
saut de ligne à la fin non plus.
<li><STRONG><CODE>exe</CODE></STRONG>:  C'est un lien symbolique pointant sur le fichier
exécutable correspondant au processus en cours d'exécution.
<li><STRONG><CODE>fd</CODE></STRONG>:  Ce sous-répertoire contient la liste de tous les
descripteurs de fichiers actuellement ouverts par le processus. Voyez
ci-dessous.
<li><STRONG><CODE>maps</CODE></STRONG>:  Quand vous affichez le contenu de ce tube nommé (avec
<CODE>cat</CODE> par exemple), vous pouvez voir toutes les parties de
l'espace d'adressage du processus qui sont actuellement des projections
en mémoire de fichiers. Les champs, de gauche à droite, sont: la plage
d'adresses de la projection mémoire, les permissions associées à cette
projection, le décalage depuis le début du fichier où commence la
projection, le périphérique sur lequel le fichier projeté se trouve, le
numéro d'i-noeud du fichier, et enfin le nom du fichier lui-même.
Voyez <CODE>mmap(2)</CODE>.
<li><STRONG><CODE>root</CODE></STRONG>:  C'est un lien symbolique qui pointe sur le répertoire
racine utilisé par le processus. Habituellement, ce sera <CODE>/</CODE>, mais
voyez <CODE>chroot(2)</CODE>.
<li><STRONG><CODE>status</CODE></STRONG>:  Ce fichier contient diverses informations sur le
processus: le nom de l'exécutable, son état actuel, son <EM>PID</EM> et son
<EM>PPID</EM>, ses <EM>UID</EM> et <EM>GID</EM> réels et effectifs, son occupation mémoire
et autres.</ul>

<p>Si nous listons le contenu du répertoire <CODE>fd</CODE>, nous obtenons ceci:

<p><font size="-4"><PRE>
$ ls -l fd
total 0
lrwx------    1 root     root           64 déc 16 22:04 0 -&gt; /dev/console
l-wx------    1 root     root           64 déc 16 22:04 1 -&gt; pipe:[128]
l-wx------    1 root     root           64 déc 16 22:04 2 -&gt; pipe:[129]
l-wx------    1 root     root           64 déc 16 22:04 21 -&gt; pipe:[130]
lrwx------    1 root     root           64 déc 16 22:04 3 -&gt; /dev/apm_bios
lr-x------    1 root     root           64 déc 16 22:04 7 -&gt; pipe:[130]
lrwx------    1 root     root           64 déc 16 22:04 9 -&gt; /dev/console
$
</PRE></font>

<p>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<a name="bodynote18" href="026.html#note18">[18]</a>. 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.


<H1><a name="137">Informations sur le matériel</a></H1>

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

<p><font size="-4"><PRE>
$ 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
$
</PRE></font>

<p>Par exemple, si nous regardons le contenu de <CODE>interrupts</CODE>,
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, <CODE>ioports</CODE> contiendra la liste des plages
d'entrée/sortie actuellement occupées, et enfin <CODE>dma</CODE> fait de même
avec les canaux <EM>DMA</EM>. Donc, si vous voulez repérer un conflit,
regardez le contenu de ces trois fichiers:

<p><font size="+1"><PRE>
$ 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
$
</PRE></font>

<p>Ou, plus simplement, utilisez la commande <CODE>lsdev</CODE>, 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<a name="bodynote19" href="026.html#note19">[19]</a>:

<p><font size="-3"><PRE>
$ 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
$
</PRE></font>

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


<ul><li><STRONG><CODE>cpuinfo</CODE></STRONG>:  Ce fichier contient, comme son nom l'indique (en
anglais), des informations sur le ou les processeur(s) présent(s) sur
votre machine.
<li><STRONG><CODE>modules</CODE></STRONG>:  Ce fichier contient la liste des modules
actuellement utilisés dans le noyau ainsi que leur compteur
d'utilisations. En fait, c'est la même information que celle reportée
par la commande <CODE>lsmod</CODE>.
<li><STRONG><CODE>meminfo</CODE></STRONG>:  Ce fichier contient des informations sur
l'utilisation qui est faite de la mémoire à l'instant où vous affichez
son contenu.  Une sortie plus clairement formatée est disponible avec la
commande <CODE>free</CODE>.
<li><STRONG><CODE>apm</CODE></STRONG>:  Si vous avez un ordinateur portable, afficher le
contenu de ce fichier vous permet de voir l'état de votre batterie. Vous
pouvez savoir si l'alimentation externe est branchée, la charge courante
de votre batterie, et si le <STRONG>BIOS</STRONG> <EM>APM</EM> de votre portable le
permet (malheureusement ce n'est pas le cas de tous), la durée de vie
restante, en minutes. Le fichier n'est pas très lisible en tant que tel,
vous aurez donc avantage à utiliser la commande <CODE>apm</CODE> à la
place, qui donne les mêmes informations dans un format plus lisible (si
on comprend l'anglais...).
<li><STRONG><CODE>bus</CODE></STRONG>:  Ce sous-répertoire contient des informations sur tous
les périphériques trouvés sur les différents bus de votre machine. Les
informations qu'il renferme sont en général peu lisibles, et sont pour
la plupart traitées et remises en forme par des utilitaires externes:
<CODE>lspcidrake</CODE>, <CODE>lspnp</CODE>, etc.</ul>


<H1><a name="138">Le sous-répertoire <CODE>/proc/sys</CODE></a></H1>

<p>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 <CODE>/proc</CODE>, certains
fichiers de ce répertoire sont accessibles en écriture, mais par
<CODE>root</CODE> seulement.

<p>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:


<ul><li><STRONG>Autoriser le routage</STRONG>:   Même si le noyau par défaut de
<STRONG>Linux-Mandrake</STRONG> est capable de router, il faut l'y autoriser
explicitement.  Pour cela, il suffit de taper la commande suivante en
tant que <CODE>root</CODE>:

<p><font size="+1"><PRE>
$ echo 1 &gt;/proc/sys/net/ipv4/ip_forward
</PRE></font>

<p>Remplacez le 1 par un 0 si vous voulez interdire le routage.
<li><STRONG>Empêcher l'usurpation d'adresse IP</STRONG>:  ("IP Spoofing"
en anglais) L'usurpation d'adresse IP consiste à faire croire qu'un
paquet provenant de l'extérieur vient de l'interface même par laquelle
il arrive.  C'est une technique couramment employé par les
<STRONG>crackers</STRONG><a name="bodynote20" href="026.html#note20">[20]</a>,
mais vous pouvez faire en sorte que le noyau empêche ce genre
d'intrusion pour vous. Il vous suffit de taper:

<p><font size="0"><PRE>
$ echo 1 &gt;/proc/sys/net/ipv4/conf/all/rp_filter
</PRE></font>

<p>et ce type d'attaque devient impossible.
<li><STRONG>Augmentation de la capacité des tables de fichiers et
d'i-noeuds</STRONG>:  La taille de la table des fichiers ouverts et de la
table des i-noeuds en mémoire est dynamique sous <STRONG>Linux</STRONG>. Les
valeurs par défaut sont très largement suffisantes pour une utilisation
normale, mais elles peuvent ne pas suffire si votre machine fait office
de serveur important (un serveur de bases de données par exemple). Le
premier obstacle est justement le fait que les processus ne peuvent plus
ouvrir de fichiers parce que la table est pleine, il faut donc en
augmenter la taille.  Parallèlement, il faut aussi augmenter la taille
de la table des i-noeuds. Ces deux lignes résoudront le problème:

<p><font size="+2"><PRE>
$ echo 8192 &gt;/proc/sys/fs/file-max
$ echo 16384 &gt;/proc/sys/fs/inode-max
</PRE></font>

<p>Pour que ces paramètres soient appliqués dès le démarrage du système,
vous voudrez sans doute rajouter ces deux lignes dans
<CODE>/etc/rc.d/rc.local</CODE> pour vous éviter d'avoir à les retaper à
retaper à chaque fois.</ul>
<hr><a href="016.html">Suivant&nbsp;: <STRONG>Samba</STRONG></a><br><a href="014.html">Précédent&nbsp;: Le système de fichiers de
<STRONG>Linux</STRONG>: <STRONG>ext2fs</STRONG></a><br><a href="../">Retour</a><br><hr>Copyright © 2000 <a href="http://www.mandrakesoft.com/">MandrakeSoft</a></BODY></HTML>



See more files for this project here

Gulus

Groupe d\'Utilisateurs de Linux de l\'Universit? de Sherbrooke. http://www.gulus.org/

Project homepage: http://sourceforge.net/projects/gulus
Programming language(s): PHP,Shell Script
License: other

  images/
    LMDK520x200.gif
    aftermount.gif
    beforemount.gif
    console2.gif
    emacs_1.gif
    emacs_2.gif
    emacs_3.gif
    kde_app_add.gif
    kde_app_app.gif
    kde_app_exec.gif
    kde_apps_list.gif
    kde_controlcenter.gif
    kde_desk.gif
    kde_desk_conf1.gif
    kde_disknav.gif
    kde_menu_K.gif
    kde_mime_edit.gif
    kde_mime_edit2.gif
    kde_mime_jpeg.gif
    kde_mimetypelist.gif
    kde_openwith.gif
    kde_openwith_sample.gif
    kde_pager.gif
    kde_screensavercfg.gif
    kde_stylecfg.gif
    kdm2.gif
    kfm_ftp.gif
    kfm_icon_home.gif
    kfm_menu_display.gif
    kfm_navig_conf.gif
    kfm_sample_window.gif
    kfm_url_http.gif
    kfm_web.gif
    konsole.gif
    kpackage_all.gif
    kpackage_info.gif
    kppp_compte.gif
    kppp_main.gif
    kppp_start.gif
    lothar.gif
    lothar_ethercfg.gif
    lothar_sndcfg.gif
    netconf_ppp.gif
    passwd_err.gif
    reseau.gif
    samba_swat.gif
    samba_swat_auth.gif
    tinst_authconf.gif
    tinst_bootdsk.gif
    tinst_fmt_ext2.gif
    tinst_fmt_swap.gif
    tinst_hd_dummy.gif
    tinst_hd_mnt.gif
    tinst_hd_slash.gif
    tinst_insclass.gif
    tinst_intro.gif
    tinst_iou.gif
    tinst_keyb.gif
    tinst_lang.gif
    tinst_lilo.gif
    tinst_lilo_options.gif
    tinst_media.gif
    tinst_mouse_detect.gif
    tinst_mouse_type.gif
    tinst_net_ipdns.gif
    tinst_net_ipstatic.gif
    tinst_net_iptype.gif
    tinst_pack_indiv.gif
    tinst_packs.gif
    tinst_pre.gif
    tinst_printer.gif
    tinst_rootpass.gif
    tinst_scsi.gif
    tinst_scsi_pilot.gif
    tinst_services.gif
    tinst_timezone.gif
    tinst_useradd.gif
    tinst_x_monitor.gif
    top.gif
    user_add.gif
    userconf.gif
    vi_1.gif
    vi_2.gif
    vi_3.gif
    xkill.gif
  000.html
  001.html
  002.html
  003.html
  004.html
  005.html
  006.html
  007.html
  008.html
  009.html
  010.html
  011.html
  012.html
  013.html
  014.html
  015.html
  016.html
  017.html
  018.html
  019.html
  020.html
  021.html
  022.html
  023.html
  024.html
  025.html
  026.html
  index.html