You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
CORSO DI FONDAMENTI DEI SISTEMI OPERATIVI<br />
A.A. 2012-2013<br />
(Prof. G. Piscitelli)<br />
Ad ogni file è associato un singolo ed unico i-node che memorizza la maggior parte delle informazioni restituite<br />
da stat (numero di link, dimensione, proprietario, allocazione sul disco, etc.) e i puntatori ai data block, in cui<br />
viene memorizzato il contenuto di un file. All’aumento delle dimensioni del file può corrispondere un aumento<br />
dei data block allocati per il file.<br />
Il data block di una directory viene detto directory block e contiene, per ogni file contenuto nella directory, una<br />
directory entry (#inode, filename) contenente il nome del file e il numero di i-node ad esso associato. La<br />
modifica del nome di un file viene effettuata sull'informazione memorizzata nel directory block.<br />
Un riferimento ad un file è detto link. Ogni file può avere un numero qualsiasi di link.<br />
UNIX ha due tipi di link: hard link e soft link. Entrambi possono essere creati con il comando ln.<br />
Hard link<br />
Un hard link è un puntatore all'i-node di un file. Un hard link è un elemento all’interno di una directory il cui<br />
numero di i-node corrisponde a quello di un altro file. In pratica, è possibile creare “un file” all’interno di una<br />
directory creando un puntatore ad un file già esistente. Un hard link eredita tutte le informazioni associate all'inode<br />
del file originale e non c'è più modo di distinguere tra l'hard link e il file originale.<br />
Le directory hanno un numero di link almeno pari a 2: un puntatore è memorizzato nella voce corrispondente<br />
contenuta dalla directory “padre”; un puntatore è contenuto nella stessa directory verso “.”.<br />
La maggior parte di implementazioni UNIX moderne non consente di creare ulteriori hard link a directory.<br />
Questo limite viene imposto per evitare ricorsioni infinite nel tentativo di attraversare un albero che parte da un<br />
hard link che punta alla propria directory padre. Inoltre, non è possibile effettuare un hard link con un file<br />
memorizzato su una partizione diversa da quella della directory in cui lo si vuole creare.<br />
Ogni volta che si crea un hard link ad un file, il link count per il file si incrementa di 1.<br />
Quando il comando rm riceve come argomento un hard link, il sistema decrementa il link count (nell’i-node del<br />
file) di 1. Se il link count non è 0, il sistema rimuove solo la directory entry del file cancellato. Il contenuto del<br />
file e altre directory entry per quel file (hard link) rimangono inalterati. Se il link count è 0, il sistema rimuove la<br />
directory entry per quel file, libera l’-inode del file e dealloca i data block che contenevano il file.<br />
SINTASSI: ln [opzioni] fileEsistente1 [fileEsistente2 ... fileEsistenteN] nuovoFile<br />
fileEsistenteX non può essere una directory.<br />
nuovoFile può essere una directory. In tal caso viene creato un hard link all'interno di nuovoFile a tutti i<br />
fileEsistenti indicati nel comando e i link hanno lo stesso nome dei file originari.<br />
Opzioni:<br />
-n Non crea il link se nuovoFile esistente già.<br />
Soft link o symbolic link<br />
Un soft link (o symbolic link) corrisponde ad un file che contiene, all’interno dell’unico data block ad esso<br />
associato, il percorso assoluto di un altro file. I soft link superano i limiti degli hard link in quanto consentono di:<br />
- creare collegamenti tra entità su filesystem diversi;<br />
- creare link a directory.<br />
Un soft link può essere utilizzato per creare puntatori a file o directory lasciando sempre ben chiara la distinzione<br />
tra il file originale e il link.<br />
Quando il comando rm riceve come argomento un soft link, cancella quest'ultimo e non il file a cui esso si<br />
riferisce.<br />
SINTASSI: $ ln -s pathnameAssolutofileEsistente nomeLink<br />
Esercitazioni comandi <strong>shell</strong> <strong>Bash</strong> (Ing. S. Giannini) Pagina 14