Linux-Mandrake: Manuel de référence | ||
---|---|---|
Page précédente | Chapitre 10. Le système de fichiers de GNU/Linux: ext2fs (EXTended 2 FileSystem) | Page suivante |
Pour mieux comprendre ce que cache cette notion de liens, passons par une illustration. Mettons que nous créions un fichier (ordinaire) :
$ pwd /home/reine/exemple $ ls $ touch a $ ls -il a 32555 -rw-rw-r-- 1 reine reine 0 Dec 10 08:12 a |
L'option -i de la commande ls affiche le numéro d'i-nœud, qui constitue le premier champ dans la sortie ; comme on le constate, avant que ne soit créé le fichier a, le répertoire était vide de tout autre fichier. Le troisième champ présente également un intérêt : il 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 ordinaire,
création d'un lien vers cet i-nœud, nommé a, dans le répertoire courant, /home/fg/exemple. Par conséquent, le fichier appelé /home/fg/exemple/a est un lien vers l'i-nœud de numéro 32555 ; il est pour l'instant le seul et le compteur de liens indique donc : 1.
Et si, maintenant, nous entrons :
$ ln a b $ ls -il a b 32555 -rw-rw-r-- 2 reine reine 0 Dec 10 08:12 a 32555 -rw-rw-r-- 2 reine reine 0 Dec 10 08:12 b $ |
nous aurons créé un autre lien vers le même i-nœud. Comme on peut le constater, aucun fichier nommé b n'a été créé, mais ce qui a été ajouté, est en fait un autre lien vers l'i-nœud de numéro 32555 dans le même répertoire nommé b. La deuxième sortie de ls -l nous indique ainsi que le compteur de liens est maintenant à 2 et non plus à 1.
Et alors, si nous faisons ce qui suit :
$ rm a $ ls -il b 32555 -rw-rw-r-- 1 reine reine 0 Dec 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 s'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, dépend du nombre de leurs sous-répertoires. Il se trouvera 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 (ils n'ont pas de noms) sont les connexions réseau : il vous sera impossible de voir le fichier correspondant à votre connexion à www.linux-mandrake.com dans votre arborescence, quel que soit le répertoire que vous essayiez. De même, 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 GNU/Linux: ext2fs (EXTended 2 FileSystem) | Remonter | Tubes « anonymes » et tubes nommés |