start:parcours_linux:proc
Différences
Ci-dessous, les différences entre deux révisions de la page.
start:parcours_linux:proc [2020/06/01 23:39] – créée gerardadmin | start:parcours_linux:proc [2023/01/27 16:08] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ===== Le point de montage du pseudo système de fichiers du noyau ("/ | ||
+ | |||
+ | 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' | ||
+ | |||
+ | **/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, | ||
+ | |||
+ | Voici, par exemple, l' | ||
+ | |||
+ | cat / | ||
+ | |||
+ | 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 | ||
+ | |/ | ||
+ | |/ | ||
+ | |/ | ||
+ | |/ | ||
+ | |/ | ||
+ | |/ | ||
+ | |||
+ | D' | ||
+ | \\ \\ | ||
+ | ==Information sur les processus en cours :== | ||
+ | |||
+ | Nous pouvons nous aider du système de fichiers **/proc** pour extraire des données en cours d' | ||
+ | \\ \\ | ||
+ | ==Recherchons un processus en cours d' | ||
+ | |||
+ | ps -aef | grep mozilla | ||
+ | |||
+ | Résultat : | ||
+ | |||
+ | xxxxxxx | ||
+ | |||
+ | L' | ||
+ | |||
+ | 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 -> / | ||
+ | -r-------- 1 standby standby 0 mai 1 02:52 environ | ||
+ | lrwxrwxrwx 1 standby standby 0 mai 1 01:05 exe -> / | ||
+ | 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 **/ | ||
+ | |||
+ | **ATTENTION :** Vous agissez directement sur le noyau, il faut donc être très délicat ! | ||
+ | |||
+ | **/ | ||
+ | |||
+ | Testons et commençons par voir le hostname affecté à notre machine : | ||
+ | |||
+ | * hostname | ||
+ | * POSTE1 | ||
+ | * 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 / | ||
+ | ( Sans nom de domaine ) | ||
+ | domainname.com ( Avec nom de domaine ) | ||
+ | |||
+ | |||
+ | Vérifions cette fois le hostname de la machine : | ||
+ | |||
+ | $ cat / | ||
+ | POSTE1 | ||
+ | POSTE1 | ||
+ | |||
+ | |||
+ | Nous pouvons donc constater que les commande interagissent avec ce répertoire, | ||
+ | |||
+ | Tentons d' | ||
+ | |||
+ | $ echo " | ||
+ | $ hostname | ||
+ | nouveau-hostname | ||
+ | nouveau-hostname.domainname.com | ||
+ | |||
+ | Nous voyons bien que le noyau vient d' | ||
+ | |||
+ | Un exemple assez sympathique, | ||
+ | |||
+ | Nouveau-hostname : | ||
+ | |||
+ | $ echo 1 > / | ||
+ | $ 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 > / | ||
+ | $ ping POSTE1 | ||
+ | 64 bytes from POSTE1.domainname.com (192.168.x.x): | ||
+ | |||
+ | 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' | ||
+ | |||
+ | ---- | ||