10.2. Collegamenti

Il modo migliore per capire cosa sta alla base del concetto di collegamento è quello di fare un esempio. Creiamo perciò un file di tipo normale:

$ pwd
/home/queen/example
$ ls
$ touch a
$ ls -il a
  32555 -rw-rw-r--    1 queen       queen              0 dic 10 08:12 a

L'opzione -i del comando ls visualizza il numero di inode, che si trova sul primo campo dell'output. Come potete vedere, prima che noi creassimo il file a, non esistevano altri file nella directory. L'altro campo che ci interessa è il terzo, quello che riporta il contatore di link del file.

Il comando touch a, in effetti, può essere scomposto in due azioni separate:

Ma adesso, se digitiamo:

$ ln a b
$ ls -il a b
  32555 -rw-rw-r--    2 queen       queen              0 dic 10 08:12 a
  32555 -rw-rw-r--    2 queen       queen              0 dic 10 08:12 b
$

abbiamo creato un altro collegamento allo stesso inode. Come potete vedere, non abbiamo creato un file col nome b, abbiamo soltanto, invece, aggiunto un altro collegamento all'inode numero 32555 nella stessa directory, e lo abbiamo chiamato b. Potete infatti vedere dall'output del comando ls -l che il contatore di collegamenti per questo inode adesso ne riporta due, e non più uno soltanto.

Ora, se noi digitiamo:

$ rm a
$ ls -il b
  32555 -rw-rw-r--    1 queen       queen              0 dic 10 08:12 b
$

notiamo che, malgrado il "file originale" sia stato cancellato, l'inode esiste ancora. Ma ora l'unico collegamento che fa riferimento a quest'ultimo è il file di nome /home/queen/example/b.

Un inode, pertanto, è collegato (linked) al filesystem se, e soltanto se, esiste un nome in almeno una directory[1] che vi faccia riferimento.

Anche le directory vengono archiviate in inode, ma il loro contatore di collegamenti, a differenza di tutti gli altri tipi di file, è il numero di sotto-directory contenuto al loro interno. Esistono almeno due collegamenti per ogni directory: la directory stessa (.) e quella immediatamente superiore (..).

Le connessioni di rete costituiscono esempi tipici di file che non hanno collegamenti (cioè, che non hanno nome): non vedrete mai il file corrispondente alla vostra connessione al sito linux-mandrake nell'albero delle directory, qualunque sia la directory che state utilizzando. Allo stesso modo, quando usate una pipe in una shell, il file che corrisponde alla pipe esiste, ma non è collegato.

Note

[1]

Se tale directory si trova sullo stesso filesystem dell'inode.


Tux on Star from MandrakeSoft Linux è un trademark registrato di Linus Torvalds. Tutti gli altri copyright e trademark appartengono ai rispettivi proprietari.
A meno che non sia specificato diversamente, tutto il contenuto di queste pagine e tutte le immagini sono Copyright MandrakeSoft S.A. e MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/