| Linux-Mandrake: Manuel de référence | ||
|---|---|---|
| Page précédente | Chapitre 5. Le système de fichiers de Linux: ext2fs (EXTended 2 FileSystem) | Page suivante |
Le meilleur moyen de comprendre ce qui se cache derrière cette notion de liens est de prendre un exemple. Créons un fichier (régulier) :
$ pwd /home/fg/exemple $ ls $ touch a $ ls -il a 32555 -rw-rw-r-- 1 fg fg 0 déc 10 08:12 a |
L'option -i de la commande ls affiche le numéro d'i-nœud, qui est le premier champ dans la sortie. Comme vous pouvez le voir, avant que nous ayons créé le fichier a, il n'y avait aucun fichier dans le répertoire. L'autre champ intéressant est le troisième, qui est le compteur de liens pour le fichier.
En fait, on peut séparer la commande touch a en deux actions distinctes :
création d'un i-nœud, auquel le système a attribué le numéro 32555, dont le type est celui d'un fichier régulier,
création d'un lien vers cet i-nœud, nommé a, dans le répertoire courant, /home/fg/exemple. Donc, le fichier appelé /home/fg/exemple/a est un lien vers l'i-nœud de numéro 32555, et c'est pour l'instant le seul : le compteur de liens est à 1.
Mais maintenant, si nous faisons :
$ ln a b $ ls -il a b 32555 -rw-rw-r-- 2 fg fg 0 déc 10 08:12 a 32555 -rw-rw-r-- 2 fg fg 0 déc 10 08:12 b $ |
nous avons créé un autre lien vers le même i-nœud. Comme vous pouvez le voir, nous n'avons créé aucun fichier nommé b, mais au lieu de cela nous avons ajouté un autre lien vers l'i-nœud de numéro 32555 dans le même répertoire nommé b. Vous pouvez voir dans la deuxième sortie de ls -l que le compteur de liens est maintenant 2 et non plus 1.
Maintenant, si nous faisons :
$ rm a $ ls -il b 32555 -rw-rw-r-- 1 fg fg 0 déc 10 08:12 b $ |
nous voyons que même si nous avons effacé le « fichier original », l'i-nœud existe encore. Mais maintenant le seul lien vers cet i-nœud est /home/fg/exemple/b.
Donc, un i-nœud est lié si et seulement si il est référencé par un nom au moins une fois dans un répertoire quelconque[1]. Les répertoires eux-mêmes sont aussi stockés dans des i-nœuds, mais leur compteur de liens, contrairement à tous les autres types de fichiers, est leur nombre de sous-répertoires. Il y a au moins deux liens par répertoire : le répertoire lui-même (.) et son répertoire parent (..).
Des exemples typiques de fichiers qui ne sont pas liés (c'est-à-dire qu'ils n'ont pas de noms) sont les connexions réseau : vous ne verrez jamais le fichier correspondant à votre connexion à www.linux-mandrake.com dans votre arborescence, quel que soit le répertoire que vous essayiez. De façon similaire, quand vous utilisez un tube dans le shell, le fichier correspondant au tube existe bien, mais il n'est pas lié.
| [1] | Si ce répertoire est sur le même système de fichiers que l'i-nœud. |
| Page précédente | Début | Page suivante |
| Le système de fichiers de Linux: ext2fs (EXTended 2 FileSystem) | Remonter | Tubes « anonymes » et tubes nommés |