Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
L'arborescence /proc
Cle-anglaise.png Attention ! Cet article est en cours de rédaction. Il n'a donc encore été ni relu, ni corrigé, ni validé par un modérateur.
Léa vous encourage à éditer les articles pour les améliorer ou les corriger.

Introduction

/proc est un pseudo système de fichiers. Il est montable, démontable et apparait dans la fstab. Pour monter un psudo système de fichiers /proc, il suffit de monter un type de système de fichier proc (option -t de mount). Exemple : mount -t proc nom /repertoire

La visualisation des fichiers de /proc permettent à tout instant de connaître la configuration de son système. La modification des fichiers permettent de tuner à chaud son système (via la commande /bin/echo ou cat)

Attention : La commande "echo" de certains shells ne renvoie pas de message d'erreur en cas d'incident. Il est donc préférable d'utiliser /bin/echo.

/proc continue d'évoluer avec le noyau, et certains fichiers décrits ci-dessous n'existent pas dans certaines versions. La branche du noyau qui a servi de référence est la 2.6

Les processus

Les processus sont identifiés par leur identifiant de tâche (TID). Pour simplifier, on peut assumer que le TID et le PID sont équivalent. (La notion de TID est apparue dans les noyaux 2.6, avec l'utilisation de la librairie NPTL).

Il y a deux types de processus : les processus système (ou noyau) et les processus utilisateur. Ils sont tous deux basés sur la même hiérarchie. Nous verrons au cours de la description du contenu de /proc/TID les différences d'un pocessus système et d'un processus utilisateur

Contenu du répertoire d'un processus

attr : répertoire contenant les attributs de sécurité auxv : fichier binaire. Informations passées par le noyau lors de l'édition de liens dynamiques
cmdline : Fichier texte contenant la ligne de commande :
Exemple :
# tr '\0' ' '< cmdline
dhcpcd -t 30 -h Tuxtop ath0
cwd : lien vers le répertoire courant
environ : Variables d'environnement. Pour les afficher clairement, faire un tr '\0' '\n' < environ
exe : lien vers l'exécutable
fd : répertoire contenant les descripteurs des fichiers ouverts. Les fichiers 0, 1 et 2 correspondent à l'entrée standard, la sortie standard et la sortie d'erreur. Les autres descripteurs correspondent aux autres "fichiers" ouverts (un fichier peut être un fichier, une socket, un tube). Dans certains cas, on peut utiliser ces descripteurs de fichiers pour récupérer un fichier ouvert supprimé : il suffit de copier /proc/pid/fd/X vers un autre répertoire.
maps : carte des composants de l'espace d'adresses
mem : fichier d'accès à la mémoire
mounts : systèmes de fichiers montés visibles
oom_adj : ajustement du score OOM (Out Of Memory). Ce score permet au système de choisir quelle tâche sera supprimée en cas d'OOM. La valeur peut être située entre -16(tâche prioritaire) à 15 (tâche à supprimer en priorité). Il y a de plus la valeur particulière -17 qui empêche la suppression de la tâche en cas d'OOM. Ce fichier est modifiable et on peut donc modifier le score avec une simple commande /bin/echo
oom_score : score actuel de la tâche. Plus le score est élevée, plus la tâche risque d'être supprimée en cas d'OOM.
root : lien vers le répertoire racine
smaps : donne des informations plus précises que le fichier maps. La partie résidente en mémoire de chaque composant est indiqué.
stat : état détaillé
statm : information sur la mémoire
status : description de la tâche (reprend les informations de stat et statm, et les affiche dans un format plus lisible
tasks : fichier contenant des liens vers le différents threads de la tâche.

Les informations système

Les informations réseau

Ces informations se trouvent dans /proc/net. Les adresses IP sont écrites en hexa. On retrouve toutes les informations des commandes usuelles (ifconfig, route, iptables, netstat,...)

/proc/net/route correspond à la table de routage

Affichages

Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons CC-BY-SA