/proc, /sys, /dev : les dossiers où le noyau te parle
Tu sais où lire l'état du noyau, des processus et du matériel, changer un réglage avec sysctl et le rendre permanent, et reconnaître un périphérique dans /dev.
Mis à jour le
Pourquoi on voit ça
Sous Linux, tout est fichier. Pour connaître l’état du serveur ou changer un réglage du noyau, tu ne passes pas par un panneau de configuration : tu lis ou tu écris dans un fichier.
Encore faut-il savoir lequel. En dépannage, la moitié du travail consiste à aller au bon chemin. Cette leçon te donne trois dossiers spéciaux (/proc, /sys, /dev), puis une carte d’ensemble pour ne plus les confondre avec /etc ou /boot.
/proc : le noyau et les processus
/proc est un dossier virtuel. Ses fichiers ne sont pas sur le disque : le noyau les fabrique en RAM au moment où tu les lis. Ils ne prennent aucune place et ils sont toujours à jour.
Tu y trouves deux choses.
Des infos sur le noyau et la machine :
cat /proc/cpuinfo
cat /proc/meminfo
Un dossier par processus, qui porte son PID :
ls /proc/1234
Le processus 1234 s’arrête ? Le dossier /proc/1234 disparaît. Des commandes comme ps et top ne font que lire /proc et mettre en forme ce qu’elles y trouvent.
/proc/sys et sysctl : régler le noyau
La plupart des fichiers de /proc se lisent seulement. Le sous-dossier /proc/sys fait exception : il contient les réglages du noyau, et tu peux les modifier à chaud.
Exemple classique : le routage IP, qui permet au serveur de faire passer des paquets d’une carte réseau à l’autre. Le réglage est dans ce fichier :
/proc/sys/net/ipv4/ip_forward
0 = désactivé, 1 = activé. Pour lire ou changer la valeur, on utilise la commande sysctl :
sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1
La première ligne affiche la valeur, la seconde l’écrit (-w comme write).
Du chemin au nom sysctl
Le nom donné à sysctl est le chemin du fichier, avec deux transformations :
- tu enlèves
/proc/sys/au début ; - tu remplaces les
/par des points.
/proc/sys, le nom court pour sysctl.| Fichier | Nom sysctl |
|---|---|
/proc/sys/net/ipv4/ip_forward |
net.ipv4.ip_forward |
/proc/sys/vm/swappiness |
vm.swappiness |
/proc/sys/kernel/hostname |
kernel.hostname |
Rendre le réglage permanent
/proc/sys vit en RAM. Au redémarrage, tout est remis à zéro et ton sysctl -w est perdu.
Pour garder le réglage, tu l’écris dans /etc/sysctl.conf, un vrai fichier sur le disque, relu à chaque démarrage :
net.ipv4.ip_forward=1
Puis tu peux appliquer le fichier tout de suite, sans redémarrer :
sysctl -p
Retiens le duo : sysctl -w pour maintenant, /etc/sysctl.conf pour toujours.
Contexte, pas à apprendre. Sur les Debian les plus récentes, on range plutôt ces réglages dans des fichiers
.confdu dossier/etc/sysctl.d/. Le principe reste le même. Dans le cours, la réponse attendue est/etc/sysctl.conf.
/sys : le matériel et les pilotes
/sys est lui aussi virtuel et en RAM, mais il raconte autre chose : le matériel et les pilotes tels que le noyau les voit. Disques, cartes réseau, micrologiciel…
ls /sys/class/net
ls /sys/block
La première commande liste les interfaces réseau, la seconde les disques. Dans ce cours, /sys se lit : tu vas y chercher une information, tu n’y règles rien. Les réglages, c’est /proc/sys.
Le piège à éviter : /proc/sys n’est pas /sys.
| Dossier | Ce qu’il contient | On y écrit ? |
|---|---|---|
/proc |
infos du noyau, un dossier par processus | non |
/proc/sys |
réglages du noyau | oui, avec sysctl -w |
/sys |
matériel et pilotes | non, on consulte |
/dev : les périphériques
Dans /dev, chaque fichier représente un périphérique. Lire ou écrire dans ce fichier, c’est lire ou écrire sur le périphérique lui-même, en passant par le noyau.
Ces fichiers ne sont pas créés à la main. C’est udev qui s’en charge : quand le noyau détecte un périphérique (une clé USB qu’on branche, par exemple), udev crée le fichier correspondant dans /dev. Quand tu la retires, le fichier disparaît.
Bloc ou caractère
ls -l /dev/sda /dev/tty
brw-rw---- 1 root disk … /dev/sda
crw-rw-rw- 1 root tty … /dev/tty
La première lettre de la ligne donne le type.
| Lettre | Type | Image | Exemples |
|---|---|---|---|
b |
bloc | un livre : tu lis par blocs et tu peux sauter à n’importe quelle page | /dev/sda, /dev/sda1, /dev/nvme0n1 |
c |
caractère | un robinet : les données coulent dans l’ordre, sans retour en arrière | /dev/tty, /dev/zero, /dev/urandom |
Bloc = stockage (disques, partitions). Caractère = flux (terminal, générateur de zéros ou de nombres aléatoires).
Lire un nom de disque
| Nom | Signification |
|---|---|
/dev/sda |
1er disque SATA ou USB |
/dev/sdc |
3e disque (a, b, c : ordre de détection) |
/dev/sdc1 |
1re partition du 3e disque |
/dev/nvme0n1 |
1er disque NVMe |
/dev/nvme0n1p1 |
1re partition du 1er disque NVMe |
En SATA, la lettre désigne le disque et le chiffre la partition. En NVMe, la partition s’écrit avec un p devant son numéro.
p avant le chiffre.Major et minor
Dans la sortie de ls -l, un fichier de périphérique n’a pas de taille. À la place, il affiche deux nombres séparés par une virgule :
brw-rw---- 1 root disk 8, 1 … /dev/sda1
- le major (ici
8) désigne le pilote qui gère le périphérique (8: les disques SATA ou USB) ; - le minor (ici
1) désigne le périphérique précis que gère ce pilote : le disque lui-même ou l’une de ses partitions.
Retiens le principe, pas les valeurs : cat /proc/devices donne la liste des pilotes et de leur major.
La carte d’ensemble des dossiers
| Dossier | Ce qu’on y trouve | Exemple |
|---|---|---|
/etc |
la configuration du système et des services | /etc/sysctl.conf |
/boot |
ce qui sert à démarrer : noyau, initramfs, GRUB | /boot/grub/grub.cfg |
/proc |
infos du noyau et des processus (en RAM) | /proc/cpuinfo |
/sys |
matériel et pilotes (en RAM) | /sys/firmware/efi |
/dev |
les fichiers de périphériques | /dev/sda1 |
/var |
les données qui changent : journaux, files d’attente | /var/log |
/home |
les dossiers personnels des utilisateurs | /home/tom |
/tmp |
les fichiers temporaires, effacés au redémarrage | /tmp/test.txt |
Trois questions pour trouver le bon dossier :
- C’est un réglage que j’écris et qui doit rester ? →
/etc(sur le disque). - C’est une information que le noyau me donne ? →
/proc(noyau, processus) ou/sys(matériel). - C’est un périphérique que je veux utiliser ? →
/dev.
À retenir
/proc: infos du noyau et un dossier par processus (/proc/PID). Tout est en RAM./proc/syscontient les réglages du noyau.sysctl -w net.ipv4.ip_forward=1: les points remplacent les/.sysctl -west perdu au redémarrage. Pour le garder :/etc/sysctl.conf./sys: matériel et pilotes./proc/sysn’est pas/sys./dev: les périphériques, créés par udev.b= bloc (le livre),c= caractère (le robinet).sda= 1er disque,sdc1= 1re partition du 3e disque,nvme0n1p1= 1re partition du 1er disque NVMe.
Entraînement
12 questions, dont 4 à compléter. Tu réponds, on passe à la suivante. La note arrive à la fin.
Ta note
Cartes · 12
Réviser les cartes ici
Pourquoi