Recherche de site Web

/proc - Obtenir des informations sur le processus et le matériel Linux


Aujourd’hui, nous allons nous plonger dans le contenu du répertoire /proc pour développer une meilleure compréhension de ses fonctionnalités. Il est important de noter que le répertoire /proc est une caractéristique commune à toutes les distributions Linux, quelle que soit leur saveur ou leur architecture.

Une idée fausse que nous devons immédiatement clarifier est que le répertoire /proc n’est PAS un système de fichiers conventionnel au sens traditionnel du terme.

Il s’agit d’un système de fichiers virtuel qui contient des informations sur les processus et d’autres données liées au système au sein du procfs. Ce système de fichiers est mappé au répertoire /proc et est monté pendant le processus de démarrage du système.

Qu’est-ce que /proc sous Linux

Le système de fichiers /proc sert d’interface aux structures de données du noyau et aux informations d’exécution, ce qui permet aux utilisateurs et aux applications d’accéder à des informations détaillées sur les processus, la configuration du système, le matériel, etc., en exposant ces données par le biais d’une hiérarchie de fichiers virtuels.

Pour afficher la liste complète des fichiers et des répertoires du système de fichiers /proc, vous pouvez utiliser la commande ls comme indiqué.

$ ls /proc

Navigation dans /proc sous Linux

Lorsque vous naviguez vers le répertoire /proc, vous remarquerez qu’il y a des fichiers familiers, puis tout un tas de répertoires numérotés, chacun correspondant à un processus en cours d’exécution sur le système.

$ cd /proc
ls

Ces répertoires numérotés représentent les processus, mieux connus sous le nom d’ID de processus (PID), et à l’intérieur de ceux-ci, une commande qui les occupe. Les fichiers contiennent des informations système telles que la mémoire (meminfo), les informations sur le processeur (cpuinfo) et les systèmes de fichiers disponibles.

Voici quelques fichiers et répertoires clés que vous rencontrerez :

  • /proc/cpuinfo – Répertorie les informations sur le(s) processeur(s) du système, telles que le modèle, la vitesse et le nombre de cœurs.
  • /proc/meminfo – Répertorie les détails sur l’utilisation de la mémoire et les statistiques qui contiennent la quantité totale de mémoire, la mémoire libre et la mémoire utilisée par chaque processus.
  • /proc/filesystems – Contient une liste de tous les systèmes de fichiers pris en charge par le noyau.
  • /proc/sys – Liste des paramètres de configuration et d’exécution du noyau.
  • /proc/loadavg – Affiche la charge moyenne du système sur différents intervalles de temps tels que 1, 5 et 15 minutes.
  • /proc/self – Un lien symbolique vers le propre répertoire du processus.
  • /proc/stat – Contient une variété de statistiques sur le système, telles que le nombre de processus en cours d’exécution, le nombre d’interruptions et le temps passé dans chaque état du processeur.
  • /proc/uptime – Contient la durée d’exécution du système.
  • /proc/PID – Contient des informations sur un processus spécifique, où PID est l’ID du processus.

Extraction des informations du système

Le fichier /proc/meminfo est utilisé pour afficher des informations sur l’utilisation de la mémoire et les statistiques d’un système Linux, qui contient un instantané de diverses mesures liées à la mémoire, ce qui peut être utile pour surveiller les performances du système et l’utilisation des ressources.

$ cat /proc/meminfo

Comme vous pouvez le voir, /proc/meminfo contient un tas d’informations sur la mémoire de votre système, y compris la quantité totale disponible (en ko) et la quantité libre sur les deux premières lignes.

L’exécution de la commande cat sur l’un des fichiers de /proc affichera leur contenu. Les informations sur les fichiers sont disponibles dans la page de manuel en exécutant :

$ man 5 /proc/<filename>

Je vais vous donner un bref aperçu des fichiers de /proc :

  • /proc/cmdline – Informations de ligne de commande du noyau.
  • /proc/console – Informations sur les consoles actuelles, y compris tty.
  • /proc/devices : pilotes de périphériques actuellement configurés pour le noyau en cours d’exécution.
  • /proc/dma – Informations sur les canaux DMA actuels.
  • /proc/fb – Périphériques Framebuffer.
  • /proc/filesystems – Systèmes de fichiers actuels pris en charge par le noyau.
  • /proc/iomem : carte de mémoire système actuelle pour les périphériques.
  • /proc/ioports : régions de port enregistrées pour la communication d’entrée-sortie avec le périphérique.
  • /proc/loadavg : charge moyenne du système.
  • /proc/locks – Fichiers actuellement verrouillés par le noyau.
  • /proc/meminfo – Informations sur la mémoire système (voir l’exemple ci-dessus).
  • /proc/misc – Pilotes divers enregistrés pour les principaux périphériques divers.
  • /proc/modules – Modules du noyau actuellement chargés.
  • /proc/mounts – Liste de tous les supports utilisés par le système.
  • /proc/partitions – Informations détaillées sur les partitions disponibles pour le système.
  • /proc/pci – Informations sur chaque périphérique PCI.
  • /proc/stat – Enregistrement ou diverses statistiques conservées lors du dernier redémarrage.
  • /proc/swap – Informations sur l’espace d’échange.
  • /proc/uptime – Informations sur le temps de fonctionnement (en secondes).
  • /proc/version : version du noyau, version gcc et distribution Linux installées.

Extraction des informations sur le processus

Dans les répertoires numérotés de /proc, vous trouverez quelques fichiers et liens. N’oubliez pas que les numéros de ces répertoires sont en corrélation avec le PID de la commande qu’ils exécutent.

Par exemple, l’accès à /proc/<PID> fournit des détails tels que :

  • /proc/<PID>/cmdline : arguments de ligne de commande utilisés pour démarrer le processus.
  • /proc/<PID>/status – Informations détaillées sur l’état, y compris l’utilisation de la mémoire et les statistiques de processus.
  • /proc/<PID>/fd – Liens symboliques vers les fichiers ouverts par le processus.

Utilisons un exemple pour afficher un dossier appelé /proc/12.

$ cd /proc/12
ls

Si je cours :

$ cat /proc/12/status

J’obtiens ce qui suit :

Alors, qu’est-ce que cela signifie ? Eh bien, la partie importante est en haut. Nous pouvons voir dans le fichier d’état que ce processus appartient à rcu_tasks_rude_kthread. Son état actuel est inactif et son ID de processus est 12, évidemment.

Nous pouvons également voir qui l’exécute, car UID et GID sont 0, ce qui indique que ce processus appartient à l’utilisateur root.

Dans n’importe quel répertoire numéroté, vous aurez une structure de fichiers similaire, et les plus importants avec leurs descriptions, sont les suivants :

  • cmdline – ligne de commande du processus
  • ENVIRONNEMENT – Variables environnementales
  • fd – descripteurs de fichiers
  • limites – contient des informations sur les limites du processus
  • Montures – Informations connexes

Vous remarquerez également plusieurs liens dans l’annuaire numéroté :

  • cwd – un lien vers le répertoire de travail actuel du processus
  • exe – lien vers l’exécutable du processus
  • root – lien vers le répertoire de travail du processus

Cela devrait vous permettre de commencer à vous familiariser avec le répertoire /proc. Il devrait également fournir un aperçu de la façon dont un certain nombre de commandes obtiennent leurs informations, telles que le temps de fonctionnement, lsof, mount et ps, pour n’en nommer que quelques-unes.

Articles connexes: