Les groupes communs d'informations sur le noyau sont regroupés en répertoires et sous-répertoires dans /proc/.
Chaque répertoire /proc/ contient un certain nombre de répertoires nommés à partir de chiffres. Une liste de tels répertoires pourrait ressembler à l'exemple suivant :
dr-xr-xr-x 3 root root 0 Feb 13 01:28 1 dr-xr-xr-x 3 root root 0 Feb 13 01:28 1010 dr-xr-xr-x 3 xfs xfs 0 Feb 13 01:28 1087 dr-xr-xr-x 3 daemon daemon 0 Feb 13 01:28 1123 dr-xr-xr-x 3 root root 0 Feb 13 01:28 11307 dr-xr-xr-x 3 apache apache 0 Feb 13 01:28 13660 dr-xr-xr-x 3 rpc rpc 0 Feb 13 01:28 637 dr-xr-xr-x 3 rpcuser rpcuser 0 Feb 13 01:28 666 |
Ces répertoires sont appelés répertoires de processus car ils font référence à un ID de processus et contiennent des informations se rapportant à ce processus. Le propriétaire et le groupe de chaque répertoire de processus est paramétré sur l'utilisateur qui exécute le processus. Lorsque le processus est terminé, son répertoire de processus /proc/ disparaît.
Chaque répertoire de processus contient les lignes suivantes :
cmdline — Contient la commande émise au début du processus.
cpu — Fournit des informations spécifiques sur l'utilisation de chaque unité centrale du système. Un processus exécuté sur un système à double unité centrale produit une sortie semblable à l'extrait ci-dessous :
cpu 11 3 cpu0 0 0 cpu1 11 3 |
cwd — Lien symbolique vers le répertoire de travail courant pour ce processus.
environ — Fournit la liste des variables d'environnement du processus. La variable d'environnement est indiquée en majuscules et la valeur en minuscules.
exe — Lien symbolique vers le fichier exécutable de ce processus.
fd — Répertoire qui contient tous les descripteurs de fichiers pour un processus donné. Ces derniers sont fournis en liens numérotés :
total 0 lrwx------ 1 root root 64 May 8 11:31 0 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 1 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 2 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 3 -> /dev/ptmx lrwx------ 1 root root 64 May 8 11:31 4 -> socket:[7774817] lrwx------ 1 root root 64 May 8 11:31 5 -> /dev/ptmx lrwx------ 1 root root 64 May 8 11:31 6 -> socket:[7774829] lrwx------ 1 root root 64 May 8 11:31 7 -> /dev/ptmx |
maps — Contient les configurations mémoire vers les divers fichiers exécutables et les bibliothèques associés à ce processus. Ce fichier peut être long, en fonction de la complexité du processus. Ci-après figure un exemple de début de sortie du processus sshd :
08048000-08086000 r-xp 00000000 03:03 391479 /usr/sbin/sshd 08086000-08088000 rw-p 0003e000 03:03 391479 /usr/sbin/sshd 08088000-08095000 rwxp 00000000 00:00 0 40000000-40013000 r-xp 00000000 03:03 293205 /lib/ld-2.2.5.so 40013000-40014000 rw-p 00013000 03:03 293205 /lib/ld-2.2.5.so 40031000-40038000 r-xp 00000000 03:03 293282 /lib/libpam.so.0.75 40038000-40039000 rw-p 00006000 03:03 293282 /lib/libpam.so.0.75 40039000-4003a000 rw-p 00000000 00:00 0 4003a000-4003c000 r-xp 00000000 03:03 293218 /lib/libdl-2.2.5.so 4003c000-4003d000 rw-p 00001000 03:03 293218 /lib/libdl-2.2.5.so |
mem — Mémoire retenue par le processus. Ce fichier ne peut être lu par l'utilisateur.
root — Lien vers le répertoire root du processus.
stat — État du processus.
statm — État de la mémoire utilisée par le processus. Ci-dessous figure un exemple de fichier /proc/statm :
263 210 210 5 0 205 0 |
Les sept colonnes font référence à différentes statistiques de mémoire pour le processus. De gauche à droite, elles indiquent les aspects suivants de la mémoire utilisée :
Taille totale du programme, exprimée en Ko.
Taille des portions de mémoire, exprimée en Ko.
Nombre de pages partagées.
Nombre de pages de code.
Nombre de pages de données/pile.
Nombre de pages de bibliothèque.
Nombre de pages incorrectes.
status — État du processus sous une forme plus lisible que stat ou statm. Un exemple de sortie de sshd ressemble à l'extrait ci-dessous :
Name: sshd State: S (sleeping) Tgid: 797 Pid: 797 PPid: 1 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 32 Groups: VmSize: 3072 kB VmLck: 0 kB VmRSS: 840 kB VmData: 104 kB VmStk: 12 kB VmExe: 300 kB VmLib: 2528 kB SigPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 8000000000001000 SigCgt: 0000000000014005 CapInh: 0000000000000000 CapPrm: 00000000fffffeff CapEff: 00000000fffffeff |
Les informations contenues dans cette sortie incluent le nom et l'ID du processus, l'état (tel que S (sleeping) pour le mode veille, ou R (running)) pour une exécution en cours, l'ID de l'utilisateur/du groupe qui exécute le processus de même que des données beaucoup plus détaillées portant sur l'utilisation de la mémoire.
Le répertoire /proc/self/ est un lien vers le processus en cours d'exécution. Cela permet à un processus de se contrôler lui-même sans avoir à connaître son ID de processus.
Dans un environnement shell, le résultat est le même, que vous répertoriiez le contenu du répertoire /proc/self/ ou celui du répertoire de processus pour ce processus.
Ce répertoire contient des informations spécifiques aux divers bus disponibles sur le système. Ainsi, par exemple, sur un système standard comportant des bus PCI et USB, les informations actuelles relatives à chacun de ces bus se trouvent dans un sous-répertoire sous /proc/bus/ au même nom, comme par exemple /proc/bus/pci/.
Les sous-répertoires et les fichiers disponibles sous /proc/bus/ dépendent des périphériques connectés au système. Toutefois, chaque type de bus possède au moins un répertoire. Sous ces répertoires de bus se trouve normalement au moins un sous-répertoire nommé à partir de chiffres, tel que 001, qui contient des fichiers binaires.
Par exemple, le sous-répertoire /proc/bus/usb/ contient des fichiers qui détectent les différents périphériques sur les bus USB, ainsi que les pilotes nécessaires pour les utiliser. Ci-après figure un exemple du répertoire /proc/bus/usb/ :
total 0 dr-xr-xr-x 1 root root 0 May 3 16:25 001 -r--r--r-- 1 root root 0 May 3 16:25 devices -r--r--r-- 1 root root 0 May 3 16:25 drivers |
Le répertoire /proc/bus/usb/001/ contient tous les périphériques présents sur le premier bus USB. Le fichier devices identifie le concentrateur root USB sur la carte mère.
Voici l'exemple d'un fichier /proc/bus/usb/devices :
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 0.00 S: Product=USB UHCI Root Hub S: SerialNumber=d400 C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms |
Ce répertoire contient des informations sur des pilotes spécifiques utilisés par le noyau.
On peut y trouver un fichier commun, rtc, qui fournit une sortie provenant du pilote pour l'horloge temps réel (RTC) (de l'anglais Real Time Clock) du système, le dispositif qui maintient l'heure lorsque le système est éteint. Ci-après figure un exemple de sortie de /proc/driver/rtc :
rtc_time : 01:38:43 rtc_date : 1998-02-13 rtc_epoch : 1900 alarm : 00:00:00 DST_enable : no BCD : yes 24hr : yes square_wave : no alarm_IRQ : no update_IRQ : no periodic_IRQ : no periodic_freq : 1024 batt_status : okay |
Pour plus d'informations sur l'horloge temps réel (RTC), consultez la documentation suivante : /usr/src/linux-2.4/Documentation/rtc.txt.
Ce répertoire montre quels fichiers système sont exportés. Si vous exécutez un serveur NFS, vous pouvez taper cat /proc/fs/nfs/exports afin d'afficher les systèmes de fichiers qui sont partagés ainsi que les autorisations accordées pour ces derniers. Pour plus d'informations sur le partage des systèmes de fichiers avec NFS, consultez le Chapitre 9.
Ce répertoire contient des informations sur les périphériques IDE du système. Chaque canal IDE est représenté par un répertoire séparé, tel que /proc/ide/ide0 et /proc/ide/ide1. De plus, un fichier drivers est disponible ; il fournit le numéro de version des divers pilotes utilisés sur les canaux IDE :
ide-cdrom version 4.59 ide-floppy version 0.97 ide-disk version 1.10 |
Plusieurs jeux de puces ou chipsets fournissent également dans ce répertoire un fichier qui donne des renseignements supplémentaires sur les lecteurs connectés via les canaux. Par exemple, un jeu de puces générique Ultra 33 PIIX4 d'Intel produit un fichier /proc/ide/piix qui vous indiquera si DMA ou UDMA est activé pour les périphériques situés sur les canaux IDE :
Intel PIIX4 Ultra 33 Chipset. ------------- Primary Channel ---------------- Secondary Channel ------------- enabled enabled ------------- drive0 --------- drive1 -------- drive0 ---------- drive1 ------ DMA enabled: yes no yes no UDMA enabled: yes no no no UDMA enabled: 2 X X X UDMA DMA PIO |
En examinant le répertoire d'un canal IDE, tel que ide0, vous pouvez obtenir des informations supplémentaires. Le fichier channel indique le numéro de canal, alors que model vous indique le type de bus pour ce canal (tel que pci).
À l'intérieur de chaque répertoire de canal IDE se trouve un répertoire de périphérique. Le nom du répertoire de périphérique correspond à la lettre du périphérique dans le répertoire /dev/. Par exemple, le premier périphérique IDE sur ide0 serait hda.
![]() | Remarque |
---|---|
Il existe un lien symbolique pour chacun de ces répertoires de périphériques dans le répertoire /proc/ide/. |
Chaque répertoire de périphérique contient un recueil d'informations et de statistiques. Le contenu de ces répertoires varie selon le type de périphérique connecté. Parmi les fichiers les plus utiles communs à beaucoup de périphériques se trouvent :
cache — Le cache du périphérique ;
capacity — La capacité du périphérique, en blocs de 512 octets ;
driver — Le pilote et la version utilisés pour contrôler le périphérique ;
geometry — La géométrie physique et logique du périphérique ;
media — Le type de périphérique, comme par exemple disk.
model — Le nom ou le numéro de modèle du périphérique ;
settings — Un ensemble de paramètres courants du périphérique. Ce fichier contient normalement un certain nombre d'informations techniques utiles. Un exemple de fichier settings pour un disque dur IDE standard ressemble à l'extrait ci-dessous :
name value min max mode ---- ----- --- --- ---- bios_cyl 784 0 65535 rw bios_head 255 0 255 rw bios_sect 63 0 63 rw breada_readahead 4 0 127 rw bswap 0 0 1 r current_speed 66 0 69 rw file_readahead 0 0 2097151 rw ide_scsi 0 0 1 rw init_speed 66 0 69 rw io_32bit 0 0 3 rw keepsettings 0 0 1 rw lun 0 0 7 rw max_kb_per_request 64 1 127 rw multcount 8 0 8 rw nice1 1 0 1 rw nowerr 0 0 1 rw number 0 0 3 rw pio_mode write-only 0 255 w slow 0 0 1 rw unmaskirq 0 0 1 rw using_dma 1 0 1 rw |
Ce répertoire est utilisé pour paramétrer l'association IRQ-CPU, qui permet de connecter un IRQ donné à une seule unité centrale. Vous pouvez également empêcher qu'une unité centrale gère un IRQ.
Chaque IRQ a son propre répertoire, ce qui permet une configuration individuelle de chacun d'eux. Le fichier /proc/irq/prof_cpu_mask est un masque de bit qui contient les valeurs par défaut pour le fichier smp_affinity dans le répertoire IRQ. Les valeurs de smp_affinity spécifient quelles unités centrales gèrent cet IRQ spécifique.
Pour davantage d'informations sur le répertoire /proc/irq/, reportez-vous à la documentation suivante :
/usr/src/linux-2.4/Documentation/filesystems/proc.txt |
Ce répertoire fournit une vision exhaustive de nombreux paramètres et statistiques réseau. Chaque répertoire et fichier virtuel dans ce répertoire décrivent des aspects de la configuration réseau du système. Vous trouverez ci-dessous une liste partielle du répertoire /proc/net/ :
arp — Contient la table ARP du noyau. Ce fichier est particulièrement utile pour connecter une adresse câblée à une adresse IP sur un système.
atm — Répertoire contenant des fichiers avec divers paramètres et statistiques de mode de transfert asynchrone (ATM) (de l'anglais Asynchronous Transfer Mode). Ce répertoire est principalement utilisé pour la gestion de réseau ATM et les cartes ADSL.
dev — Répertorie les différents périphériques réseau configurés sur le système, complet avec les statistiques de transmission et de réception. Ce fichier vous indique rapidement le nombre d'octets envoyés et reçus par chaque interface, le nombre de paquets entrants et sortants, le nombre d'erreurs trouvées, le nombre de paquets perdus, etc.
dev_mcast — Affiche les différents groupes de multidiffusion Layer2 qu'écoute chaque périphérique.
igmp — Affiche la liste des adresses IP de multidiffusion auxquelles le système s'est joint.
ip_conntrack — Affiche la liste des connexions réseau suivies pour les machines qui sont des connexions IP de reacheminement.
ip_tables_names — Affiche la liste des types de iptables en cours d'utilisation. Ce fichier est seulement présent si les iptables sont en opération sur le système et contient plusieurs des valeurs suivantes:filter, mangle ou nat.
ip_mr_cache — Liste du cache du routeur de diffusion.
ip_mr_vif — Liste des interfaces virtuelles de diffusion.
netstat — Contient un ensemble large, mais détaillé, de statistiques réseau, telles que les délais d'attente TCP, les cookies SYN envoyés et reçus, etc.
psched — Liste des paramètres du programmateur global des paquets.
raw — Liste des statistiques brutes relatives aux périphériques.
route — Affiche la table de routage du noyau.
rt_cache — Contient le cache de routage actuel.
snmp — Liste des données du protocole d'administration à distance de réseaux ou SNMP (de l'anglais Simple Network Management Protocol) pour divers protocoles de gestion de réseau en cours d'utilisation.
sockstat — Fournit des statistiques sur les sockets.
tcp — Contient des informations détaillées sur les sockets TCP.
tr_rif — Table de routage RIF du bus annulaire à jeton (token ring).
udp — Contient des informations détaillées sur les sockets UDP.
unix — Liste les sockets de domaine UNIX actuellement utilisés.
wireless — Répertorie les données d'interface sans fil.
Ce répertoire est analogue au répertoire /proc/ide/ à la seule différence près qu'il est réservé aux périphériques SCSI connectés.
Le fichier principal est /proc/scsi/scsi, qui contient une liste de tous les périphériques SCSI reconnus. Cette liste fournit également des informations sur le type de périphérique, ainsi que le nom de modèle, le fabricant, le canal et les données ID SCSI disponibles.
Par exemple, si un système disposait d'un CD-ROM SCSI, d'un lecteur de bande, d'un disque dur ainsi que d'un contrôleur RAID, ce fichier ressemblerait à l'extrait ci-dessous :
Attached devices: Host: scsi1 Channel: 00 Id: 05 Lun: 00 Vendor: NEC Model: CD-ROM DRIVE:466 Rev: 1.06 Type: CD-ROM ANSI SCSI revision: 02 Host: scsi1 Channel: 00 Id: 06 Lun: 00 Vendor: ARCHIVE Model: Python 04106-XXX Rev: 7350 Type: Sequential-Access ANSI SCSI revision: 02 Host: scsi2 Channel: 00 Id: 06 Lun: 00 Vendor: DELL Model: 1x6 U2W SCSI BP Rev: 5.35 Type: Processor ANSI SCSI revision: 02 Host: scsi2 Channel: 02 Id: 00 Lun: 00 Vendor: MegaRAID Model: LD0 RAID5 34556R Rev: 1.01 Type: Direct-Access ANSI SCSI revision: 02 |
Chaque pilote SCSI utilisé par le système a son propre répertoire dans /proc/scsi/, qui contient des fichiers spécifiques à chaque contrôleur SCSI qui utilise ce pilote. Par conséquent, dans le cas de l'exemple ci-dessus, les répertoires aic7xxx et megaraid sont présents, car ces deux pilotes sont utilisés. Les fichiers situés dans chacun des répertoires contiennent généralement la plage d'adresses E/S, les IRQ ainsi que les statistiques relatives au contrôleur SCSI qui utilise ce pilote. Chaque contrôleur peut rapporter types et quantités d'informations différents. Le fichier du contrôleur SCSI Adaptec AIC-7880 Ultra produit dans cet exemple la sortie suivante :
Adaptec AIC7xxx driver version: 5.1.20/3.2.4 Compile Options: TCQ Enabled By Default : Disabled AIC7XXX_PROC_STATS : Enabled AIC7XXX_RESET_DELAY : 5 Adapter Configuration: SCSI Adapter: Adaptec AIC-7880 Ultra SCSI host adapter Ultra Narrow Controller PCI MMAPed I/O Base: 0xfcffe000 Adapter SEEPROM Config: SEEPROM found and used. Adaptec SCSI BIOS: Enabled IRQ: 30 SCBs: Active 0, Max Active 1, Allocated 15, HW 16, Page 255 Interrupts: 33726 BIOS Control Word: 0x18a6 Adapter Control Word: 0x1c5f Extended Translation: Enabled Disconnect Enable Flags: 0x00ff Ultra Enable Flags: 0x0020 Tag Queue Enable Flags: 0x0000 Ordered Queue Tag Flags: 0x0000 Default Tag Queue Depth: 8 Tagged Queue By Device array for aic7xxx host instance 1: {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255} Actual queue depth per device for aic7xxx host instance 1: {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} Statistics: (scsi1:0:5:0) Device using Narrow/Sync transfers at 20.0 MByte/sec, offset 15 Transinfo settings: current(12/15/0/0), goal(12/15/0/0), user(12/15/0/0) Total transfers 0 (0 reads and 0 writes) < 2K 2K+ 4K+ 8K+ 16K+ 32K+ 64K+ 128K+ Reads: 0 0 0 0 0 0 0 0 Writes: 0 0 0 0 0 0 0 0 (scsi1:0:6:0) Device using Narrow/Sync transfers at 10.0 MByte/sec, offset 15 Transinfo settings: current(25/15/0/0), goal(12/15/0/0), user(12/15/0/0) Total transfers 132 (0 reads and 132 writes) < 2K 2K+ 4K+ 8K+ 16K+ 32K+ 64K+ 128K+ Reads: 0 0 0 0 0 0 0 0 Writes: 0 0 0 1 131 0 0 0 |
Cette sortie vous permet de visualiser la vitesse de transfert des différents périphériques SCSI connectés au contrôleur en fonction de l'ID de canal, ainsi que des statistiques détaillées concernant la quantité et la taille des fichiers lus ou écrits par ces périphériques. Par exemple, à partir de la sortie ci-dessus, vous pouvez voir que ce contrôleur communique avec le CD-ROM à une vitesse de 20 Mo par seconde, alors que le lecteur de bande ne communique lui qu'à une vitesse de 10 Mo par seconde.
Le répertoire /proc/sys/ est différent des autres répertoires de /proc/ car, en plus de fournir des informations relatives au système, il vous permet d'apporter des modifications à la configuration du noyau. Ceci permet à l'administrateur de l'ordinateur d'activer et de désactiver immédiatement des fonctions du noyau.
![]() | Avertissement |
---|---|
Soyez prudent lorsque vous modifiez les paramètres sur un système de production à l'aide des différents fichiers du répertoire /proc/sys/. La modification d'un mauvais paramètre peut rendre le noyau instable et nécessiter le redémarrage du système. Pour cette raison, avant de changer une valeur dans /proc/sys/, assurez-vous que les options de ce fichier sont bien valides. |
Pour savoir si un fichier donné peut être configuré ou s'il est uniquement conçu pour fournir des informations, vous pouvez l'afficher à l'aide de l'option -l entrée à l'invite du shell. Si le fichier peut être modifié, vous pouvez alors l'utiliser pour configurer le noyau. Ci-dessous figure un exemple d'affichage partiel de /proc/sys/fs :
-r--r--r-- 1 root root 0 May 10 16:14 dentry-state -rw-r--r-- 1 root root 0 May 10 16:14 dir-notify-enable -r--r--r-- 1 root root 0 May 10 16:14 dquot-nr -rw-r--r-- 1 root root 0 May 10 16:14 file-max -r--r--r-- 1 root root 0 May 10 16:14 file-nr |
Dans cet exemple, les fichiers dir-notify-enable et file-max peuvent être modifiés et, par conséquent, peuvent être utilisés pour configurer le noyau. Les autres fichiers ne fournissent que des informations sur les paramètres actuels.
Pour changer une valeur dans un fichier /proc/sys/, il faut enregistrer la nouvelle valeur dans le fichier à l'aide de la commande echo. Par exemple, pour activer la touche d'interrogation système sur un noyau en cours d'exécution, tapez la commande :
echo 1 > /proc/sys/kernel/sysrq |
Cette opération aura pour effet de modifier la valeur sysrq qui passera de 0 (off) à 1 (on).
Quelques fichiers de configuration /proc/sys/ contiennent plus d'une valeur. Placez un espace blanc entre chaque valeur transmise à l'aide de la commande echo afin d'envoyer correctement les nouvelles valeurs, comme c'est le cas dans l'exemple suivant :
echo 4 2 45 > /proc/sys/kernel/acct |
![]() | Remarque |
---|---|
Toute modification de configuration effectuée à l'aide de la commande echo disparaîtra lors du redémarrage du système. Pour faire en sorte que vos modifications soient appliquées au démarrage, reportez-vous à la Section 5.4. |
Le répertoire /proc/sys/ contient plusieurs sous-répertoires qui contrôlent différents aspects d'un noyau en cours d'exécution.
Ce répertoire fournit des paramètres pour des périphériques particuliers du système. La plupart des systèmes ont au moins deux répertoires, à savoir cdrom et raid. Les noyaux personnalisés eux peuvent en avoir d'autres, tels que parport, qui donne la possibilité de partager un port parallèle entre plusieurs pilotes de périphériques.
Le répertoire cdrom contient un fichier appelé info, qui indique un certain nombre de paramètres importants pour le lecteur de CD-ROM :
CD-ROM information, Id: cdrom.c 3.12 2000/10/18 drive name: hdc drive speed: 32 drive # of slots: 1 Can close tray: 1 Can open tray: 1 Can lock tray: 1 Can change speed: 1 Can select disk: 0 Can read multisession: 1 Can read MCN: 1 Reports media changed: 1 Can play audio: 1 Can write CD-R: 0 Can write CD-RW: 0 Can read DVD: 0 Can write DVD-R: 0 Can write DVD-RAM: 0 |
Ce fichier peut être examiné rapidement pour découvrir les qualités d'un lecteur de CD-ROM inconnu, pour le noyau tout au moins. Si plusieurs lecteurs de CD-ROM sont disponibles sur un système, chaque périphérique dispose de sa propre colonne d'informations.
De nombreux fichiers de /proc/sys/dev/cdrom, tels que autoclose et checkmedia, peuvent être utilisés pour contrôler le lecteur de CD-ROM du système. Utilisez simplement la commande echo pour activer ou désactiver ces fonctions.
Si la prise en charge de RAID est compilée dans le noyau, un répertoire /proc/sys/dev/raid/ sera disponible et contiendra au moins deux fichiers : speed_limit_min et speed_limit_max. Ces paramètres permettent de déterminer quelle augmentation de vitesse appliquer au périphérique RAID pour des tâches E/S particulièrement intensives, telles que la re-synchronisation des disques.
Ce répertoire contient une gamme d'options et d'informations relatives à divers aspects des systèmes de fichiers, y compris, quota, indicateur de fichier, inode et dentry.
Le répertoire binfmt_misc est utilisé pour fournir au noyau la prise en charge de formats binaires divers.
Les fichiers importants du répertoire /proc/sys/fs comprennent :
dentry-state — Donne l'état du cache du répertoire. Le fichier ressemble à l'extrait ci-dessous :
57411 52939 45 0 0 0 |
Le premier nombre indique le nombre total d'entrées dans le cache du répertoire, alors que le deuxième indique le nombre d'entrées non utilisées. Le troisième indique le nombre de secondes entre le moment où un répertoire a été libéré et le moment où il peut être récupéré et le quatrième mesure les pages actuellement demandées par le système. Les deux derniers nombres ne sont pas utilisés et n'affichent actuellement que des zéros.
dquot-nr — Indique le nombre maximum d'entrées de quota de disque en cache.
file-max — Indique le nombre maximum d'indicateurs de fichier alloués par le noyau. Si vous augmentez la valeur dans ce fichier, vous pourrez résoudre des erreurs causées par le manque d'indicateurs de fichier disponibles.
file-nr — Affiche le nombre d'indicateurs de fichier alloués, utilisés et maximum.
overflowgid et overflowuid — Définissent respectivement l'ID groupe et l'ID utilisateur fixes ; ils sont utilisés avec des systèmes de fichiers qui ne prennent en charge que des ID groupe et utilisateur 16 bits.
super-max — Contrôle le nombre maximum de superblocs disponibles.
super-nr — Affiche le nombre actuel de superblocs utilisés.
Ce répertoire contient divers fichiers de configuration qui affectent directement le fonctionnement du noyau. Parmi les fichiers les plus importants figurent :
acct — Contrôle la suspension de la comptabilisation du processus sur la base du pourcentage d'espace libre disponible sur le système de fichiers contenant le journal. Par défaut, ce fichier ressemble à l'extrait ci-dessous :
4 2 30 |
La deuxième valeur définit le seuil de suspension de la journalisation en pourcentage d'espace libre, alors que la première valeur indique le pourcentage nécessaire pour reprendre la journalisation. La troisième valeur indique l'intervalle en secondes entre les interrogations du système de fichiers par le noyau pour savoir si la journalisation doit être suspendue ou reprise.
cap-bound — Contrôle les paramètres de délimitation des capacités qui fournit la liste des capacités de tout processus du système. Si une capacité n'est pas incluse dans cette liste, aucun processus, quels que soient ses privilèges, ne peut l'exécuter. L'objectif est d'améliorer la sécurité du système en s'assurant que certaines choses ne puissent se produire, du moins au-delà d'un point donné du processus de démarrage.
Pour obtenir une liste des valeurs acceptables pour ce fichier virtuel, consultez /usr/src/linux-2.4/include/linux/capability.h. De plus amples informations sur la délimitation des capacités sont disponibles en ligne à l'adresse suivante :
http://lwn.net/1999/1202/kernel.php3 |
ctrl-alt-del — Contrôle si
domainname — Permet de configurer le nom de domaine du système, tel que example.com.
hostname — Permet de configurer le nom d'hôte du système, tel que www.example.com.
hotplug — Configure l'utilitaire à utiliser lorsqu'un changement de configuration est détecté par le système. Il est surtout utilisé avec USB et Cardbus PCI. La valeur par défaut de /sbin/hotplug ne devrait pas être modifiée, à moins que vous ne testiez un nouveau programme pour jouer ce rôle.
modprobe — Définit l'emplacement du programme utilisé pour charger des modules du noyau. La valeur par défaut est /sbin/modprobe ce qui signifie que kmod l'appelle pour charger le module lorsqu'un thread du noyau appelle kmod.
msgmax — Définit la taille maximum de tout message envoyé d'un processus à un autre ; sa valeur par défaut est 8192 octets. Soyez prudent lorsque vous décidez d'augmenter cette valeur car les messages mis en file d'attente entre les processus sont stockés dans la mémoire non échangeable du noyau. Toute augmentation de msgmax augmentera également la demande de mémoire vive du système.
msgmnb — Définit le nombre maximum d'octets dans une file d'attente de messages. La valeur par défaut est 16384.
msgmni — Définit le nombre maximum d'identificateurs de file d'attente de messages. Par défaut, la valeur est 16.
osrelease — Fournit le numéro de version du noyau Linux. Ce fichier ne peut être modifié qu'en changeant la source du noyau et en recompilant.
ostype — Affiche le type de système d'exploitation. Par défaut, ce fichier est paramétré sur Linux ; cette valeur ne peut être modifiée qu'en changeant la source du noyau et en recompilant.
overflowgid et overflowuid — Définissent respectivement l'ID groupe et l'ID utilisateur fixes ; ils sont utilisés avec des appels système sur des architectures qui ne prennent en charge que des ID groupe et utilisateur 16 bits.
panic — Définit le nombre de secondes de report du redémarrage par le noyau, lorsque le système subit une panique du noyau. Par défaut, la valeur est de 0, ce qui désactive le redémarrage automatique après une panique.
printk — Fichier contrôlant toute une série de paramètres relatifs à l'affichage ou à la journalisation de messages d'erreur. Chaque message d'erreur rapporté par le noyau a un niveau journal (loglevel) qui lui est associé et qui définit son importance. Les valeurs du niveau journal se répartissent dans l'ordre suivant :
0 — Urgence du noyau. Le système est inutilisable.
1 — Alerte du noyau. Une action immédiate est requise.
2 — Condition du noyau considérée comme critique.
3 — Condition générale d'erreur du noyau.
4 — Condition générale d'avertissement du noyau.
5 — Avis du noyau d'une condition normale, mais importante.
6 — Message d'information du noyau.
7 — Messages de niveau débogage du noyau.
Le fichier printk comporte quatre valeurs :
6 4 1 7 |
Chacune de ces valeurs définit une règle différente de traitement des messages d'erreur. La première valeur, appelée niveau journal de la console (console loglevel), spécifie la plus basse priorité de messages qui sera affichée sur la console (veuillez noter que plus la priorité est basse, plus le numéro du niveau journal est élevé). La deuxième valeur définit le niveau journal par défaut pour les messages dépourvus de niveau journal explicite. La troisième valeur spécifie la plus basse configuration de niveau journal possible pour le niveau journal de la console. La dernière valeur définit la valeur par défaut pour le niveau journal de la console.
Le répertoire random — Stocke un certain nombre de valeurs relatives à la génération de nombres aléatoires pour le noyau.
rtsig-max — Configure le nombre maximum de signaux POSIX en temps réel que le système peut avoir mis simultanément en file d'attente. La valeur par défaut est 1024.
rtsig-nr — Indique le nombre actuel de signaux POSIX en temps réel mis en file d'attente par le noyau.
sem — Représente le fichier configurant les paramètres de sémaphores dans le noyau. Un sémaphore est un objet IPC System V utilisé pour contrôler l'utilisation d'un processus spécifique.
shmall — Définit la quantité totale de mémoire partagée, en octets, qui peut être utilisée à un moment précis sur le système. Par défaut, cette valeur est de 2097152.
shmmax — Définit la plus grande taille autorisée par le noyau d'un segment de mémoire partagée, en octets. Par défaut, cette valeur est de 33554432. Le noyau prend cependant en charge des valeurs beaucoup plus élevées.
shmmni — Définit le nombre maximum de segments de mémoire partagée pour l'ensemble du système. Par défaut, cette valeur est de 4096
sysrq — Active la touche d'interrogation système, si cette valeur est différente de la valeur par défaut, qui est de 0.
La touche d'interrogation système permet l'entrée immédiate d'informations dans le noyau au moyen d'une simple combinaison de touches. Par exemple, elle peut être utilisée pour arrêter ou redémarrer immédiatement un système, synchroniser tous les systèmes de fichiers montés ou vider des informations importantes sur votre console. Pour lancer une touche d'interrogation système, tapez
r — Désactive le mode brut du clavier et le règle sur XLATE (un mode de clavier plus limité qui ne reconnaît pas les modificateurs comme
k — Termine tous les processus actifs dans une console virtuelle. Également appelée Secure Access Key (SAK), elle est souvent utilisée pour vérifier que l'invite de connexion est bien engendrée par init et non pas par une copie de cheval de Troie conçue pour capturer les noms d'utilisateurs et les mots de passe.
b — Redémarre le noyau sans tout d'abord démonter les systèmes de fichiers ou synchroniser les disques connectés au système.
c — Plante le système sans tout d'abord démonter les systèmes de fichiers ou synchroniser les disques connectés au système.
0 — Éteint le système.
0 — Essaie de synchroniser les disques connectés au système.
u — Essaie de démonter et de remonter tous les systèmes de fichiers en lecture-seule.
p — Affiche tous les indicateurs et registres sur la console.
t — Affiche une liste de processus sur la console.
m — Désactive entièrement Exec Shield.
0 à 9 — Définit le niveau de journalisation de la console.
e — Termine tous les processus sauf init à l'aide de SIGTERM.
i — Termine tous les processus sauf init à l'aide de SIGKILL.
l — Termine tous les processus à l'aide de SIGKILL (y compris init). Le système est inutilisable après avoir exécuté le code de touche d'interrogation système.
h — Affiche le texte d'aide.
Cette fonction est la plus utile lors de l'utilisation d'un noyau de développement ou lors de gels du système.
![]() | Attention |
---|---|
La fonctionnalité de la touche d'interrogation système est considérée comme un risque de sécurité vu qu'une console sans surveillance peut permettre à un agresseur d'accéder au système. Pour cette raison, elle est désactivée par défaut. |
Reportez-vous à /usr/src/linux-2.4/Documentation/sysrq.txt afin d'obtenir davantage d'informations sur la touche d'interrogation système.
sysrq-key — Définit le code de la touche d'interrogation système (84 est la valeur par défaut).
sysrq-sticky — Définit si la touche d'interrogation système est une combinaison de touches simultanée. Parmi les valeurs acceptées figurent :
0 — Les touches
1 — Les touches
sysrq-timer — Définit le délai en nombre de secondes avant que le code d'interrogation système ne doive être entré. La valeur par défaut est 10.
tainted — Indique si un module non-GPL est chargé.
0 — Aucun module non-GPL n'est chargé.
1 — Au moins un module sans licence GPL (y compris des modules sans licence) est chargé.
2 — Au moins un module a été chargé par force à l'aide de la commande insmod -f.
threads-max — Définit le nombre maximum d'unités d'exécution devant être utilisé par le noyau, avec une valeur par défaut de 2048.
version — Affiche la date et l'heure de la dernière compilation du noyau. Le premier champ dans ce fichier, par exemple #3, fait référence au nombre de fois que le noyau a été construit à partir de la source.
Ce répertoire contient des sous-répertoires relatifs à divers éléments réseau. Diverses configurations lors de la compilation du noyau déterminent la présence ou non de différents répertoires à cet endroit, comme par exemple appletalk, ethernet, ipv4, ipx et ipv6. En changeant les fichiers dans ces répertoires, les administrateurs système peuvent ajuster les configurations réseau sur un système en cours d'exécution.
Étant donné le nombre important d'options réseau possibles et disponibles sous Linux, nous n'aborderons que les répertoires /proc/sys/net/ les plus courants.
Le répertoire /proc/sys/net/core/ contient une série de paramètres qui contrôlent l'interaction entre le noyau et les couches réseau. Les fichiers les plus importants de ce répertoire sont :
message_burst — Définit la durée, en dixièmes de seconde, nécessaire pour écrire un nouveau message d'avertissement. Ceci est utilisé pour empêcher les attaques par déni de service (DoS). La valeur par défaut est de 50.
message_cost — Indique un coût sur chaque message d'avertissement. Plus la valeur de ce fichier est élevée (5 par défaut), plus il est probable que le message d'avertissement soit ignoré. Ce paramètre est utilisé pour empêcher les attaques DoS.
L'idée de base d'une attaque DoS est de bombarder votre système de requêtes qui génèrent des erreurs et remplissent les partitions de disque de fichiers journaux ou qui accaparent toutes les ressources de votre système pour gérer la journalisation des erreurs. Les paramètres de message_burst et message_cost sont conçus pour être modifiés en fonction des risques acceptables de votre système par rapport au besoin d'une journalisation exhaustive.
netdev_max_backlog — Définit le nombre maximum de paquets pouvant être mis en file d'attente lorsqu'une interface spécifique reçoit des paquets plus rapidement que le noyau ne peut les traiter. La valeur par défaut de ce fichier est de 300.
optmem_max — Configure la taille maximum des tampons auxiliaires qui est autorisée par socket.
rmem_default — Définit la taille par défaut en octets du tampon de socket de réception.
rmem_max — Définit la taille maximum en octets du tampon de réception.
wmem_default — Définit la taille par défaut en octets du tampon d'envoi.
wmem_max — Définit la taille maximum en octets du tampon d'envoi.
Le répertoire /proc/sys/net/ipv4/ contient des paramètres de mise en réseau supplémentaires. Bon nombre de ces paramètres, utilisés en connexion les uns avec les autres, sont très utiles pour empêcher des attaques contre votre système ou pour utiliser le système en tant que routeur.
![]() | Attention |
---|---|
Une modification inappropriée de ces fichiers pourrait avoir un effet néfaste sur votre connectivité distante au système. |
Ci-dessous sont énumérés certains des fichiers les plus importants du répertoire /proc/sys/net/ipv4/ :
icmp_destunreach_rate, icmp_echoreply_rate, icmp_paramprob_rate et icmp_timeexeed_rate — Définissent le délai maximum d'envoi, en centièmes de seconde, de paquets ICMP aux hôtes sous certaines conditions. La valeur 0 éliminant tout délai, elle n'est pas recommandée.
icmp_echo_ignore_all et icmp_echo_ignore_broadcasts — Permet au noyau d'ignorer les paquets ECHO ICMP de tous les hôtes ou uniquement ceux qui proviennent, respectivement, d'adresses de diffusion ou de multidiffusion. Une valeur de 0 permet au noyau de répondre, alors qu'une valeur de 1 elle, lui fait ignorer les paquets.
ip_default_ttl — Définit la durée de vie (TTL) (de l'anglais Time To Live) par défaut, qui limite le nombre de sauts qu'un paquet peut faire avant d'atteindre sa destination. L'augmentation de cette valeur peut réduire les performances du système.
ip_forward — Permet aux interfaces du système de réacheminer des paquets aux autres interfaces. Par défaut, ce fichier est défini sur 0. En paramétrant ce fichier sur 1 vous activez le réacheminement des paquets réseau.
ip_local_port_range — Spécifie la plage de ports que TCP ou UDP doivent utiliser lorsqu'un port local est requis. Le premier nombre correspond au port le plus bas à utiliser et le second au port le plus élevé. Tout système sur lequel on s'attend à un nombre de ports requis supérieur aux valeurs 1024 à 4999 par défaut, devrait utiliser la plage 32768 à 61000.
tcp_syn_retries — Fournit une limite du nombre de fois que votre système retransmet un paquet SYN lorsqu'il essaie d'effectuer une connexion.
tcp_retries1 — Définit le nombre de retransmissions permises, essayant de répondre à une connexion entrante. 3 est la valeur par défaut.
tcp_retries2 — Définit le nombre de retransmissions permises de paquets TCP. 15 est la valeur par défaut.
Le /usr/src/linux-2.4/Documentation/networking/ip-sysctl.txt contient une liste exhaustive des fichiers ainsi que des options disponibles dans le répertoire /proc/sys/net/ipv4/.
De nombreux autres répertoires existent dans le répertoire /proc/sys/net/ipv4/, chacun d'entre eux couvrant un aspect différent de la pile réseau. Le répertoire /proc/sys/net/ipv4/conf/ permet de configurer chaque interface du système de façon différente et d'utiliser des paramètres par défaut pour des périphériques non configurés (dans le sous-répertoire /proc/sys/net/ipv4/conf/default/) ainsi que des paramètres qui annulent toutes les configurations spéciales (dans le sous-répertoire /proc/sys/net/ipv4/conf/all/).
Le répertoire /proc/sys/net/ipv4/neigh/ contient non seulement des paramètres nécessaires pour la communication avec un hôte connecté directement au système (que l'on appelle voisin réseau) mais également des paramètres relatifs aux systèmes qui se trouvent à plusieurs sauts de distance.
Le routage via IPV4 dispose également de son propre répertoire, appelé /proc/sys/net/ipv4/route/. Contrairement à conf/ et neigh/, le répertoire /proc/sys/net/ipv4/route/ contient des spécifications qui s'appliquent au routage avec toutes les interfaces du système. Bon nombre de ces paramètres, tels que max_size, max_delay et min_delay, font référence au contrôle de la taille du cache de routage. Pour libérer le cache de routage, spécifiez simplement une valeur quelconque dans le fichier flush.
Des informations supplémentaires sur ces répertoires et les valeurs possibles pour leurs fichiers de configuration se trouvent dans :
/usr/src/linux-2.4/Documentation/filesystems/proc.txt |
Ce répertoire facilite la configuration du sous-système de la mémoire virtuelle (VM) du noyau Linux. Le noyau utilise de façon exhaustive et intelligente la mémoire virtuelle, que l'on appelle communément l'espace swap.
Les fichiers suivants se trouvent généralement dans le répertoire /proc/sys/vm/ :
bdflush — Définit différentes valeurs liées au démon du noyau bdflush.
kswapd — Définit différentes valeurs relatives au démon de permutation du noyau kswapd. Ce fichier contient trois valeurs, à savoir :
512 32 8 |
La première valeur indique le nombre maximum de pages que kswapd essaiera de libérer en une seule tentative. Plus cette valeur est élevée, plus le noyau peut agir rapidement pour libérer des pages. La deuxième valeur définit le nombre minimum d'essais de libération d'une page par kswapd. La troisième valeur indique le nombre de pages que kswapd essaie d'écrire en une seule tentative. Un réglage précis de la valeur finale permet d'améliorer les performances sur un système qui utilise beaucoup d'espace swap en indiquant au noyau d'écrire les pages en blocs de grande taille, ce qui minimise le nombre de recherches disque.
max_map_count — Configure le nombre maximum de zones de topologie mémoire qu'un processus peut avoir. La valeur par défaut de 65536 est appropriée dans la plupart des cas.
hugetlb_pool — Spécifie, en méga-octets, la taille des hugepages — de grandes pages de mémoire, physiquement continues. Ces pages peuvent être utilisées pour créer de grands mappages de mémoire virtuelle TLB, qui sont utiles pour les applications de bases de données à mémoire intense. TLB est un cache CPU spécial conçu pour de tels mappages de mémoire virtuelle.
Bien que cette fonction puisse être ajustée au lancement, elle est sensible aux problèmes de fragmentation lors de la croissance du parc pendant que le champ MemFree de /proc/meminfo est bas. Pour cette raison, il est nécessaire de placer de nouveaux paramètres dans /etc/sysctl.conf et de redémarrer. Reportez-vous à la Section 5.4 afin d'obtenir davantage d'informations sur sysctl.
Reportez-vous à la documentation /usr/src/linux-2.4/Documentation/vm/hugetlbpage.txt afin d'obtenir davantage d'informations sur la configuration de hugepages.
![]() | Important |
---|---|
Bien qu'il soit mentionné dans hugetlbpage.txt, le fichier /proc/sys/vm/nr_hugepages n'existe pas sous Red Hat Enterprise Linux. hugetlb_pool devrait être utilisé pour configurer le nombre de hugepages disponibles pour le système. Il est également important de se souvenir que nr_hugepages utilise des unités de hugepage, alors que hugetlb_pool configure les hugepages en méga-octets. |
overcommit_memory — Configure les conditions sous lesquelles une grande demande de mémoire est acceptée ou refusée. Les trois modes suivants sont disponibles :
0 — Le noyau effectue le traitement de surcharge de mémoire heuristique, en estimant la quantité de mémoire disponible et en refusant les requêtes qui sont invalides de façon évidente. Malheureusement, vu que la mémoire est allouée à l'aide d'un algorithme heuristique et non pas précis, ce paramètre peut parfois autoriser la surcharge de la mémoire disponible sur un système. Ceci est le paramètre par défaut.
1 — Le noyau n'effectue aucun traitement de surcharge de mémoire. Sous cette configuration, la possibilité de surcharge de mémoire est augmentée, ainsi que les performances pour les tâches qui nécessitent énormément de mémoire (telles que celles exécutées par certains logiciels scientifiques).
2 — Le noyau refuse des requêtes de mémoire qui, accumulées, sont égales à tout le swap plus le pourcentage de RAM physique spécifié dans /proc/sys/vm/overcommit_ratio. Ce paramètre est le plus approprié pour les personnes qui souhaitent des risques de surcharge de mémoire moins élevés.
![]() | Remarque |
---|---|
Cette configuration est uniquement recommandée pour les systèmes avec des zones de swap supérieures à la mémoire physique. |
overcommit_ratio — Spécifie le pourcentage de RAM physique considérée lorsque /proc/sys/vm/overcommit_memory est réglé sur 2. La valeur par défaut est 50.
pagecache — Permet de contrôler la quantité en pourcentage de la mémoire totale du système devant être utilisée comme cache de page. La sortie de ce fichier ressemble à l'extrait ci-dessous :
1 15 100 |
La première valeur définit le pourcentage minimum de mémoire à utiliser comme mémoire tampon et de cache de page. La valeur au milieu indique le pourcentage de mémoire système dédié à la mémoire tampon et de cache de page à partir duquel le sous-système de gestion de la mémoire commencera à libérer davantage le cache tampon que les autres types de mémoire pour compenser le manque général de mémoire libre. La dernière valeur spécifie le pourcentage maximum de mémoire à utiliser comme mémoire tampon, mais celle-ci n'est pas encore implémentée.
page-cluster — Définit le nombre de pages lues en une seule tentative. La valeur par défaut est 3 et se rapporte en fait à 16 pages ; cette valeur est adéquate pour la plupart des systèmes.
pagetable_cache — Contrôle le nombre de tables de pages mises en cache par processeur. La première et la deuxième valeur font respectivement référence au nombre minimal et maximal de tables de pages à ne pas prendre en compte.
Le fichier /usr/src/linux-2.4/Documentation/sysctl/vm.txt contient des informations supplémentaires sur ces fichiers.
Ce répertoire contient des informations sur les ressources IPC System V. Les fichiers de ce répertoire concernent les appels IPC System V de messages (msg), sémaphores (sem) et mémoire partagée (shm).
Ce répertoire contient des informations sur les périphériques tty disponibles et actuellement utilisés sur le système. Appelés à l'origine périphériques téléimprimeurs (ou télétypes), tout terminal basé sur les caractères est un périphérique tty.
Sous Linux, il existe trois types différents de périphérique tty. Les périphériques série sont utilisés avec les connexions série, par exemple par modem ou câble série. Les terminaux virtuels créent la connexion console commune, comme les consoles virtuelles disponibles lorsque vous appuyez sur
serial /dev/cua 5 64-127 serial:callout serial /dev/ttyS 4 64-127 serial pty_slave /dev/pts 136 0-255 pty:slave pty_master /dev/ptm 128 0-255 pty:master pty_slave /dev/ttyp 3 0-255 pty:slave pty_master /dev/pty 2 0-255 pty:master /dev/vc/0 /dev/vc/0 4 0 system:vtmaster /dev/ptmx /dev/ptmx 5 2 system /dev/console /dev/console 5 1 system:console /dev/tty /dev/tty 5 0 system:/dev/tty unknown /dev/vc/%d 4 1-63 console |
Le fichier /proc/tty/driver/serial répertorie les statistiques d'utilisation et l'état de chaque ligne tty série.
Pour que les périphériques tty puissent être utilisés comme des périphériques réseau, le noyau Linux applique une procédure de transmission sur les périphériques. Cela permet au pilote de placer un type spécifique d'en-tête sur chaque bloc de données transmis via un périphérique donné ; ainsi, l'extrémité distante de la connexion voit ce bloc de données comme un tout unique dans un flux de blocs de données. SLIP et PPP sont des procédures de transmission courantes et sont communément utilisées pour connecter des systèmes via un lien série.
Les procédures de transmission enregistrées sont stockées dans le fichier ldiscs et des informations détaillées sont disponibles dans le répertoire ldisc.
Précédent | Sommaire | Suivant |
Fichiers de niveau supérieur dans le système de fichiers proc | Niveau supérieur | Utilisation de la commande sysctl |