GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comprendre le système de fichiers /proc

Le système de fichiers proc contient une hiérarchie de fichiers spéciaux qui représentent l'état actuel du noyau. Il porte le nom de son objectif initial, qui est une interface avec les structures des processus en cours d'exécution pour prendre en charge les outils de débogage. Linux a adopté cela de Solaris mais a également ajouté l'interface au noyau. Le système de fichiers proc est devenu assez désordonné au fil des ans, alors Linux a créé le système de fichiers sysfs pour le nettoyer.

Les fichiers du répertoire /proc contiennent des informations sur votre matériel et les processus en cours d'exécution sur votre système. Les fichiers qui ont l'autorisation d'écriture peuvent être modifiés pour changer la configuration du noyau.

Système de fichiers virtuel

Les fichiers du répertoire /proc sont des fichiers virtuels; par conséquent, proc est appelé système de fichiers virtuel. La plupart des fichiers virtuels sont répertoriés avec une taille de zéro octet mais contiennent une grande quantité d'informations lorsqu'ils sont affichés. La plupart des horodatages sur les fichiers virtuels reflètent l'heure et la date actuelles; cependant, ces fichiers sont constamment mis à jour.

Les fichiers virtuels tels que /proc/interrupts, /proc/meminfo, /proc/cpuinfo et /proc/devices fournissent une vue du matériel du système. D'autres, comme le fichier /proc/filesystems et le répertoire /proc/sys fournissent des informations sur la configuration du système et des interfaces. Les fichiers contenant des informations sur des sujets similaires sont regroupés dans des répertoires virtuels. Par exemple, les répertoires de processus contiennent des informations sur chaque processus en cours d'exécution sur le système.

Affichage des fichiers virtuels

La plupart des fichiers virtuels dans /proc peuvent être visualisés à l'aide de commandes telles que cat, more et less. Par exemple, pour afficher des informations sur le processeur du système, saisissez :

# cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 79
model name	: Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
stepping	: 1
microcode	: 0x1
cpu MHz		: 2199.998
cache size	: 30720 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt
bogomips	: 4399.99
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management:

Certains fichiers ne sont accessibles qu'avec les privilèges root. Certains fichiers dans /proc contiennent des informations qui ne sont pas lisibles par l'homme. Utilisez des utilitaires tels que lspci, free et top pour afficher ces fichiers. Par exemple, utilisez la commande lspci pour répertorier tous les périphériques PCI :

# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04)
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
00:04.0 SCSI storage controller: Red Hat, Inc Virtio SCSI
00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:06.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:07.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon

Modification des fichiers virtuels

La plupart des fichiers virtuels du répertoire /proc sont en lecture seule. Cependant, certains sont inscriptibles et peuvent être utilisés pour ajuster les paramètres dans le noyau. Cela est particulièrement vrai pour les fichiers du répertoire /proc/sys. Pour modifier la valeur d'un fichier virtuel, utilisez la syntaxe suivante :

# echo value > /proc/file

Par exemple, pour modifier le nom d'hôte, saisissez :

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

D'autres fichiers agissent comme des commutateurs binaires ou booléens. L'affichage du fichier renvoie soit un 0 (désactivé ou faux) soit un 1 (activé ou vrai). Exemple :

# cat /proc/sys/net/ipv4/ip_forward 
0

Le 0 indique que le noyau ne transfère pas les paquets réseau. Pour activer le transfert de paquets :

# echo 1 > /proc/sys/net/ipv4/ip_forward
# cat /proc/sys/net/ipv4/ip_forward
1

Fichiers de niveau supérieur dans /proc

Certains des fichiers virtuels les plus utiles du niveau supérieur du répertoire /proc sont décrits ici. Il ne s'agit pas d'une liste exhaustive, mais de donner des exemples de certains fichiers et de leur objectif. La plupart de ces fichiers sont décrits plus en détail dans les leçons applicables.

  • /proc/buddyinfo  :Ce fichier est principalement utilisé pour diagnostiquer les problèmes de fragmentation de la mémoire.
  • /proc/cmdline :Ce fichier affiche les paramètres passés au noyau au moment de son démarrage.
  • /proc/cpuinfo :Ce fichier virtuel identifie le type de processeur utilisé par votre système.
  • /proc/crypto  :Ce fichier répertorie tous les chiffrements cryptographiques installés utilisés par le noyau Linux, y compris des détails supplémentaires pour chacun.
  • /proc/devices  :Ce fichier affiche les différents périphériques de caractères et de blocs actuellement configurés (sans compter les périphériques dont les modules ne sont pas chargés).
  • /proc/dma  :Ce fichier contient une liste des canaux ISA DMA enregistrés en cours d'utilisation.
  • /proc/execdomains  :Ce fichier répertorie les domaines d'exécution actuellement pris en charge par le noyau Linux, ainsi que la gamme de personnalités qu'ils prennent en charge.
  • /proc/filesystems :Ce fichier affiche une liste des types de systèmes de fichiers actuellement pris en charge par le noyau. La première colonne indique si le système de fichiers est monté sur un périphérique bloc. Ceux commençant par nodev ne sont pas montés sur un appareil. La deuxième colonne répertorie les noms des systèmes de fichiers pris en charge. La commande mount parcourt les systèmes de fichiers répertoriés ici lorsqu'aucun n'est spécifié comme argument.
  • /proc/interrupts  :Ce fichier enregistre le nombre d'interruptions par IRQ sur l'architecture x86.
  • /proc/iomem  :Ce fichier vous montre la carte actuelle de la mémoire du système pour chaque périphérique physique.
  • /proc/ioports  :Ce fichier fournit une liste des régions de port actuellement enregistrées utilisées pour la communication d'entrée ou de sortie avec un périphérique.
  • /proc/kcore :Ce fichier représente la mémoire physique du système et est stocké au format de fichier principal. Le contenu de ce fichier est conçu pour être examiné par un débogueur, tel que gdb, et n'est pas lisible par l'homme.
  • /proc/kmsg :Ce fichier est utilisé pour contenir les messages générés par le noyau. Ces messages sont ensuite récupérés par d'autres programmes, tels que /bin/dmesg.
  • /proc/loadavg  :Ce fichier fournit un aperçu de la charge moyenne en ce qui concerne à la fois le processeur et les E/S au fil du temps, ainsi que des données supplémentaires utilisées par la disponibilité et d'autres commandes.
  • /proc/locks :Ce fichier affiche les fichiers actuellement verrouillés par le noyau. Le contenu de ce fichier contient des données de débogage internes du noyau et peut varier considérablement en fonction de l'utilisation du système.
  • /proc/mdstat  :Ce fichier contient les informations actuelles pour les configurations RAID à plusieurs disques.
  • /proc/meminfo  :Ce fichier rapporte une grande quantité d'informations précieuses sur l'utilisation de la RAM du système.
  • /proc/modules :Ce fichier affiche une liste de tous les modules chargés dans le noyau. La plupart de ces informations peuvent également être consultées à l'aide de la commande /sbin/lsmod.

Répertoires de processus dans /proc

Le répertoire /proc contient des répertoires avec des noms numériques. Ces répertoires sont nommés d'après l'ID de processus d'un programme et contiennent des informations sur ce processus. Le propriétaire et le groupe de chaque répertoire de processus sont définis sur l'utilisateur qui exécute le processus. Chaque répertoire de processus contient plusieurs fichiers dont :

  • cmdline :La commande émise lors du démarrage du processus
  • cwd :Un lien symbolique vers le répertoire de travail courant du processus
  • environnement  :Une liste des variables d'environnement pour le processus
  • exe :Un lien symbolique vers l'exécutable de ce processus
  • fd :Le répertoire contenant tous les descripteurs de fichiers pour un processus particulier
  • cartes  :une liste des cartes mémoire des exécutables et des fichiers de bibliothèque associés au processus
  • mémoire :La mémoire détenue par le processus (le fichier ne peut pas être lu par l'utilisateur)
  • racine :Un lien vers le répertoire racine du processus
  • statistiques  :L'état du processus, y compris l'état d'exécution et l'utilisation de la mémoire
  • statm :L'état de la mémoire utilisée par le processus
  • statut :Le statut du processus sous une forme plus lisible que stat ou statm

Autres répertoires dans /proc

D'autres répertoires du répertoire /proc regroupent des informations similaires par sujet. Voici une liste partielle de ces répertoires :

  • /proc/bus :Ce répertoire contient des informations sur les différents bus disponibles sur le système. Les sous-répertoires et fichiers disponibles dans /proc/bus varient en fonction des périphériques connectés au système.
  • /proc/bus/pci, /proc/bus/usb :Vous pouvez obtenir une liste de tous les périphériques PCI et USB présents sur le système en utilisant la commande cat sur le fichier des périphériques dans ces répertoires, mais la sortie est difficile à lire et à interpréter. Pour une liste de périphériques lisible par l'homme, exécutez les commandes lspci et lsusb.
  • /proc/pilote :Ce répertoire contient des informations sur des pilotes spécifiques utilisés par le noyau.
  • /proc/fs :Ce répertoire montre quels systèmes de fichiers sont exportés. Si vous exécutez un serveur NFS, tapez cat /proc/fs/nfsd/exports pour afficher les systèmes de fichiers partagés et les autorisations.
  • /proc/irq :Ce répertoire est utilisé pour définir l'IRQ sur l'affinité CPU, ce qui permet au système de connecter une IRQ particulière à un seul CPU. Alternativement, il peut exclure un processeur de la gestion des IRQ.
  • /proc/self/net :Ce répertoire fournit un aperçu complet de divers paramètres et statistiques de mise en réseau. Chaque répertoire et fichier virtuel de ce répertoire décrit les aspects de la configuration réseau du système. Le fichier /proc/net est un lien symbolique vers ce répertoire.
  • /proc/scsi :Le fichier principal de ce répertoire est /proc/scsi/scsi, qui contient une liste de tous les périphériques SCSI reconnus. À partir de cette liste, le type de périphérique, ainsi que le nom du modèle, le fournisseur, le canal SCSI et les données d'identification sont disponibles.
  • /proc/sys :Ce répertoire est différent des autres dans /proc, car il fournit non seulement des informations sur le système, mais vous permet également d'activer et de désactiver immédiatement les fonctionnalités du noyau. Si un fichier a des droits d'écriture, il peut être utilisé pour configurer le noyau. La modification d'une valeur dans un fichier /proc/sys/ se fait en renvoyant la nouvelle valeur dans le fichier. Par exemple, pour changer le nom d'hôte en www.example.com :
    # echo www.example.com > /proc/sys/kernel/hostname

    D'autres fichiers agissent comme des commutateurs binaires ou booléens. La valeur 0 représente off ou false. Une valeur de 1 représente on ou true. Par exemple, pour activer le transfert de paquets :

    # echo 1 > /proc/sys/net/ipv4/ip_forward

    Les modifications apportées à l'aide de la commande echo ne sont pas persistantes et disparaissent au redémarrage du système. Pour que les modifications de configuration prennent effet après le redémarrage du système, ajoutez-les au fichier /etc/sysctl.conf.

  • /proc/sys/dev  :Ce répertoire fournit des paramètres pour des périphériques particuliers sur le système.
  • /proc/sys/fs  :Ce répertoire contient des options et des informations concernant divers aspects du système de fichiers, notamment les quotas, le descripteur de fichier et les informations d'inode.
  • /proc/sys/kernel  :Ce répertoire contient une variété de fichiers de configuration différents qui affectent directement le fonctionnement du noyau.
  • /proc/sys/net :Ce répertoire contient des sous-répertoires concernant divers sujets de mise en réseau. Vous pouvez modifier les fichiers de ces répertoires pour ajuster la configuration réseau sur un système en cours d'exécution.
  • /proc/sysvipc :ce répertoire contient des informations sur les ressources System V Interprocess Communication (IPC). Les fichiers de ce répertoire concernent les appels System V IPC pour les messages (msg), les sémaphores (sem) et la mémoire partagée (shm).
  • /proc/tty :Ce répertoire contient des informations sur les périphériques tty disponibles et actuellement utilisés sur le système. Le fichier des pilotes est une liste des périphériques tty actuellement utilisés.
Comprendre le système de fichiers sysfs (/sys) sous Linux


Cent OS
  1. Comprendre le système de fichiers Btrfs dans Fedora Linux

  2. Explorer le système de fichiers Linux /proc

  3. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  4. Linux - À quelle fréquence le système de fichiers Proc est-il mis à jour sous Linux ?

  5. Comprendre Linux /proc/id/maps

Comprendre le fichier /etc/passwd

Comprendre le fichier /etc/shadow

Fichiers /proc/cpuinfo et /proc/meminfo sous Linux

Comprendre le fichier /etc/fstab sous Linux

Comprendre le fichier /etc/exports

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions