Domanda

Volevo solo chiarire se un hard link / simbolico è in realtà un file che viene creato ??

ho incontrato il comando:

ln source hardlink
ln -s source softlink

- Il comando ls mostra questo 2 collegamenti come un file

.

Quindi la mia domanda è, non ln / ln -s in realtà crea un file?

Saluti, darkie15

È stato utile?

Soluzione

Sì e no: -)

In UNIX, il contenuto di un file sono distinte dalle voci di directory per quel file. È possibile avere più punti voci di directory per lo stesso contenuto (guardare in alto inode per una descrizione di come questo opere) e, ecco il po 'complicato:

Tutte quelle voci di directory sono uguali. Anche se uno può essere stato creato per primo, non c'è niente di speciale. Se si rimuove, il contenuto non scompaiono, solo la voce di directory. I contenuti spariranno una volta che l'inode ha zero voci di directory che puntano ad esso (e tutti i processi chiudere il file - Sono stato morso prima, cercando di liberare spazio su disco eliminando i file di log solo per scoprire che, a causa di un processo ha ancora il file aperto, il contenuto del file non vengono recuperati, anche se non le voci di directory puntano a loro).

Questo è per collegamenti reali.

Link morbide sono un po 'più complicato. Fanno creare un "file" di sorta (un inode separato), che contiene il percorso del file di destinazione. E quei link sono non uguali. L'eliminazione l'originale vi lascerà con un link simbolico che punta da nessuna parte.

A causa inode sono unici in un determinato file system, hard link non può fare riferimento a dati su un file system diverso.

link soft non hanno questa limitazione poiché immagazzinano il percorso del file di destinazione, non il suo inode.

Il seguente trascrizione può aiutare:

$ echo hello >f1
$ ln f1 f2
$ ln -s f1 f3
$ ls -ial f*
    7385 -rw-r--r-- 2 pax None 6 May 11 14:09 f1
    7385 -rw-r--r-- 2 pax None 6 May 11 14:09 f2
    4672 lrwxrwxrwx 1 pax None 6 May 11 14:09 f3 -> f1
$ cat f1
    hello
$ cat f2
    hello
$ cat f3
    hello
$ rm f1
$ ls -ial f*
    7385 -rw-r--r-- 2 pax None 6 May 11 14:09 f2
    4672 lrwxrwxrwx 1 pax None 6 May 11 14:09 f3 -> f1
$ cat f1
    cat: f1: No such file or directory
$ cat f2
    hello
$ cat f3
    cat: f3: No such file or directory

ho usato solo le ultime quattro cifre del numero di inode per mantenere il breve ingresso (e non colpito con numeri di inode come 43910096366994672), ma si può vedere che f1 e f2 hanno esattamente lo stesso inode mentre f3 è diverso. Si può anche vedere che il contenuto del file creato in origine come f1 sopravvivere la sua cancellazione in quanto f2 è ancora riferimento a esso.

Tuttavia, poiché f3 fa riferimento il nome f1 piuttosto che il suo inode, si ottiene un errore nel tentativo di usarla.


A parte: Tu hai amore gotta quando i giocattoli UNIX con voi in questo modo:

$ ls f*
    f2  f3
$ cat f3 # What the ...?
    cat: f3: No such file or directory

Quasi divertente come la creazione di un file chiamato spazio backspace x e poi guardare qualcuno tenta di eliminarlo: -)

Altri suggerimenti

Nessuno dei due crea un file.

Un file sul disco è identificato da un "inode". Elenchi mappa i nomi dei file di inode. A Hard mezzi di collegamento "creare un nuovo nome di file in questa directory che punta allo stesso inode come il nome del file ho".

Un simbolico mezzi di collegamento "creare un nuovo nome di file in questa directory che punta a qualsiasi inode questo altri punti file."

Come punti mangoman fuori in un commento, un link simbolico fa creare un file con il nome della destinazione del collegamento, ma non si dovrebbe prestare attenzione ad esso. Si tratta di un file speciale che è affar tuo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top