LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


repertoire:proc

Le point de montage du pseudo système de fichiers du noyau ("/proc")

Ce répertoire représente le point de montage du pseudo système de fichiers du noyau. Ce dernier contient des fichiers permettant d’accéder aux informations sur le matériel, la configuration du noyau et sur les processus en cours d’exécution. [5] .

On retrouvera donc un répertoire par processus actif. Chacun porte le numéro du processus (PID). Il est constitué des fichiers suivants :

  • cmdline contient la ligne de commande qui a créé le processus.
  • status contient des informations sur l’état du processus (en attente, en exécution, propriétaire… ).
  • exe est un lien vers le fichier exécutable utilisé par le processus.

Dans le répertoire /proc, on retrouve des fichiers contenants des informations générales sur le système. Comme :

  • uptime donnant le temps de fonctionnement du système.
  • stat donnant diverses statistiques sur l’utilisation des ressources du système (CPU, mémoire… ).
  • meminfo donnant un récapitulatif de l’utilisation de la mémoire.
  • cpuinfo donnant une description des CPU du système.

Répertoire /proc

Qu'est-ce que "/proc" ?

/proc est un système de fichier utilisé par le noyau pour envoyer des informations aux différents processus d'ou le nom /proc.

La modification des fichiers qu'il contient peut changer des paramètres du noyau à la volée.

A la différence des autres répertoires, /proc est stocké en mémoire et non sur le disque dur.

Voici, par exemple, l'intérieur du fichier cpuinfo. Pour le consulter rapidement :

cat /proc/cpuinfo

En voici le résultat :

processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 1
model name : Intel(R) Celeron(R) CPU 1.80GHz
stepping : 3
cpu MHz : 1804.811
cache size : 128 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
bogomips : 3579.90
Les informations utiles du noyau :
Fichier Description
/proc/cpuinfo Concerne les informations sur le Processeur ( Modèle, famille, taille du cache, etc … ).

/proc/meminfo Concerne les informations sur la mémoire physique ( Ram ), l'espace du “Swap”, etc … .

/proc/mounts Concerne les informations sur les systèmes de fichiers déjà montés.

/proc/devices Concerne les informations sur les périphériques disponibles.

/proc/modules Concerne les informations sur les modules activés dans le noyau.

/proc/cmdline Concerne les informations sur les paramètres donnés au noyau lors de la mise en route.

D'autres fichiers sont bien évidemment présents dans ce répertoire. Certains sont très sensibles comme kcore, à éviter d'éditer ou de modifier.

Information sur les processus en cours :

Nous pouvons nous aider du système de fichiers /proc pour extraire des données en cours d'exécution. Le répertoire /proc contient des sous-répertoires numérotés correspondant au numéro d'identification de processus (PID). Ainsi, pour chaque processus en cours d'exécution, nous avons un sous-répertoire qui porte comme nom le PID de chacun. Ces sous-répertoires contiennent des fichiers qui fournissent des détails important de l'état et l'environnement d'un processus.

Recherchons un processus en cours d'exécution :
ps -aef | grep mozilla

Résultat :

xxxxxxx       12807  11544   5 Apr30 ?             00:22:07    /usr/lib/mozilla-1.6/mozilla-bin

L'exécution de la commande nous montre un processus de Mozilla en cours avec le PID numéro 12807 . Il devrait donc exister un sous-répertoire dans /proc portant ce numéro.

Vérifions :

ls -l /proc/1280

Résultat :

total 0
-r-------- 1 standby standby 0 mai 1 02:52 auxv
-r--r--r-- 1 standby standby 0 mai 1 01:05 cmdline
lrwxrwxrwx 1 standby standby 0 mai 1 02:52 cwd -> /home/standby/
-r-------- 1 standby standby 0 mai 1 02:52 environ
lrwxrwxrwx 1 standby standby 0 mai 1 01:05 exe ->   /usr/lib/mozilla-1.6/mozilla-bin*
dr-x------ 2 standby standby 0 mai 1 02:52 fd/
-r--r--r-- 1 standby standby 0 mai 1 02:52 maps
-rw------- 1 standby standby 0 mai 1 02:52 mem
-r--r--r-- 1 standby standby 0 mai 1 02:52 mounts
lrwxrwxrwx 1 standby standby 0 mai 1 02:52 root -> //
-r--r--r-- 1 standby standby 0 mai 1 01:05 stat
-r--r--r-- 1 standby standby 0 mai 1 02:52 statm
-r--r--r-- 1 standby standby 0 mai 1 02:40 status
dr-xr-xr-x 3 standby standby 0 mai 1 02:52 task/
-r--r--r-- 1 standby standby 0 mai 1 02:52 wchan
Interagir avec le noyau directement grâce à /proc :

La plupart des fichiers dans /proc ne sont qu'en lecture seule, excepté le répertoire /proc/sys qui lui est en lecture/écriture ce qui implique que l'on peut modifier l'état du noyau instantanément en modifiant ces fichiers.

ATTENTION : Vous agissez directement sur le noyau, il faut donc être très délicat !

/proc/sys/kernel contient les informations sur le fonctionnement général du noyau. Ce répertoire héberge le nom de domaine et le nom d'hôte pour les ordinateurs du réseau, cette configuration se trouve dans les fichiers domainname et hostname. Ceux-ci peuvent être configurés pour modifier ces noms.

Testons et commençons par voir le hostname affecté à notre machine :

  • hostname
  • POSTE1 ( Sans nom de domaine )
  • POSTE1.domainname.com ( Avec nom de domaine )

Vérifions si nous trouvons la même chose dans ce fameux répertoire. Voyons le nom de domaine :

$ cat /proc/sys/kernel/domainname
                     ( Sans nom de domaine )
domainname.com ( Avec nom de domaine )

Vérifions cette fois le hostname de la machine :

$ cat /proc/sys/kernel/hostname
POSTE1  ( Sans nom de domaine )
POSTE1  ( Avec nom de domaine )

Nous pouvons donc constater que les commande interagissent avec ce répertoire, /proc, plus précisément dans ce cas, /proc/sys/kernel/ avec les fichiers hostname et domainname.

Tentons d'interagir cette fois-ci avec le noyau. Pour cela nous allons modifier le hostname par ligne de commande puis vérifier ce que la machine nous répondra lorsque nous lui demanderons quel est notre hostname.

$ echo "nouveau-hostname" > /proc/sys/kernel/hostname
$ hostname
nouveau-hostname    ( Sans nom de domaine )
nouveau-hostname.domainname.com    ( Avec nom de domaine )

Nous voyons bien que le noyau vient d'être modifieé. Bien des fichiers peuvent être modifiés mais attention à ne pas faire tout et n'importe quoi.

Un exemple assez sympathique, modifier en temps réel le noyau de façon à ne plus permettre de réponse de votre machine sur le réseau. Pour être plus clair, nous allons lui demander de ne plus répondre à la commande PING, cela va nous permettre de nous cacher du réseau.

Nouveau-hostname :

$ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
$ ping POSTE1

Pas de réponse, si ce n'est qu'il vous montre que des packets on été envoyés mais sans retour.

Pour remettre par défaut cette valeur aussi rapidement, il suffit de remplacer la valeur 1 par 0 :

$ echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
$ ping POSTE1
64 bytes from POSTE1.domainname.com (192.168.x.x): icmp_seq=1 ttl=64 time=0.028 ms

La machine répond de nouveau !

En conclusion, le système de fichiers /proc assure une interface aux éléments internes du système Linux. Il assiste l'administrateur afin de connaître des états et de configurer des périphériques et des processus sur une machine. La compréhension et l'utilisation de ce système de fichiers sont primordiales pour bien se servir du système d'exploitation Linux. Donc ne faîtes pas de bêtises ;-) .


repertoire/proc.txt · Dernière modification: 2018/11/17 13:54 (modification externe)