Recherche de site Web

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


Aujourd'hui, nous allons approfondir le contenu du répertoire /proc pour mieux comprendre ses fonctionnalités. Il est important de noter que le répertoire /proc est une fonctionnalité commune à toutes les distributions Linux, quelle que soit leur version 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 dans les 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 avec les structures de données du noyau et les 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 à travers une hiérarchie de fichiers virtuels.

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

ls /proc

Naviguer dans /proc sous Linux

Lorsque vous accédez au répertoire /proc, vous remarquerez qu'il existe des fichiers à consonance familière, 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 d'eux, 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 contenant 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 – Répertorie les 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 diverses 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 système

Le /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 métriques liées à la mémoire, qui peuvent être utiles pour surveiller les performances du système et l'utilisation des ressources. .

cat /proc/meminfo

Comme vous pouvez le constater, /proc/meminfo contient de nombreuses informations sur la mémoire de votre système, notamment la quantité totale disponible (en Ko) et la quantité libre sur les deux premiers. 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 sur la ligne de commande du noyau.
  • /proc/console – Informations sur les consoles actuelles, y compris tty.
  • /proc/devices – Pilotes de périphérique 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 appareils.
  • /proc/ioports – Régions de port enregistrées pour la communication entrée-sortie avec l'appareil.
  • /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 – Divers pilotes enregistrés pour les divers périphériques principaux.
  • /proc/modules – Modules du noyau actuellement chargés.
  • /proc/mounts – Liste de tous les montages utilisés par le système.
  • /proc/partitions – Informations détaillées sur les partitions disponibles sur le système.
  • /proc/pci – Informations sur chaque périphérique PCI.
  • /proc/stat – Enregistrement ou diverses statistiques conservées depuis le dernier redémarrage.
  • /proc/swap – Informations sur l'espace d'échange.
  • /proc/uptime – Informations sur la disponibilité (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 exécutée dans ceux-ci.

Par exemple, accéder à /proc/ fournit des détails tels que :

  • /proc//cmdline – Arguments de ligne de commande utilisés pour démarrer le processus.
  • /proc//status – Informations détaillées sur l'état, y compris l'utilisation de la mémoire et les statistiques de processus.
  • /proc//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 :

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 exécute cela, car UID et GID sont 0, indiquant que ce processus appartient à la racine.

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

  • cmdline – ligne de commande du processus
  • environnement – variables environnementales
  • fd – descripteurs de fichiers
  • limites – contient des informations sur les limites du processus
  • montures – informations associées

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 aider à vous familiariser avec le répertoire /proc. Il devrait également donner un aperçu de la manière dont un certain nombre de commandes obtiennent leurs informations, telles que uptime, lsof, mount et ps, pour n'en nommer que quelques-unes.