Hardlink und symbolische Links in Unix
Frage
Ich wollte nur klären, ob eine harte / symbolische Verbindung tatsächlich eine Datei, die ??
erstellt wirdIch lief den Befehl:
ln source hardlink
ln -s source softlink
- Die ls Befehl zeigt dieses Bild 2 Links als Datei
. Also meine Frage ist, ist ln / ln -s
tatsächlich eine Datei erstellen?
Viele Grüße, darkie15
Lösung
Ja und nein: -)
In UNIX, den Inhalt einer Datei unterscheiden sich von den Verzeichniseinträge für die Datei. Sie können mehrere Verzeichniseinträge auf den gleichen Inhalt haben (nachschlagen inode für eine Beschreibung, wie diese Werke), und hier ist der schwierige Bit:
Alle diese Verzeichniseinträge gleich sind. Auch wenn man zum ersten Mal erstellt worden sein kann, gibt es nichts Besonderes. Wenn Sie es entfernen, kann der Inhalt nicht verschwinden, nur den Verzeichniseintrag. Der Inhalt verschwindet, sobald die Inode-Null-Verzeichniseinträge hat auf sie zeigen (und alle Prozesse schließen Sie die Datei - ich habe vor gebissen worden, indem Sie versuchen nur Protokolldateien löschen Speicherplatz zu löschen, das zu finden, weil ein Prozess noch die Datei hat geöffnet, werden die Dateiinhalte jedoch nicht wiederhergestellt noch keine Verzeichniseinträge auf sie zeigen).
Das ist, für harte Links.
Soft-Links sind ein bisschen schwieriger. Sie haben eine „Datei“ von Sorten erstellen (eine separate Inode), den Pfad zur Zieldatei enthalten. Und diese Links sind nicht gleich. das Original zu löschen lassen Sie mit einem Softlink zeigt nirgends.
Da Inodes einzigartig auf einem bestimmten Dateisystem sind, können harte Links nicht auf Daten auf einem anderen Dateisystem beziehen.
Soft-Links haben nicht diese Einschränkung, da sie den Weg in die Zieldatei speichern, nicht die Inode.
Das folgende Transkript kann helfen:
$ 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
Ich habe nur die letzten vier Ziffern der Inode-Nummer zu halten den Eintrag kurz (und nicht treffen Sie mit Inode-Nummern wie 43910096366994672
) verwendet, aber Sie können, dass f1
und f2
sehen haben genau die gleiche Inode während f3
unterscheidet. Sie können auch sehen, dass der Inhalt der Datei, die ursprünglich als f1
erstellt seine Löschung überleben, weil f2
noch es verweist.
Da jedoch f3
verweist auf den f1
Namen eher als sein Inode, erhalten Sie einen Fehler versuchen, es zu benutzen.
Neben: muss man einfach lieben es, wenn UNIX Spielzeug mit Ihnen wie folgt aus:
$ ls f*
f2 f3
$ cat f3 # What the ...?
cat: f3: No such file or directory
Fast so viel Spaß wie das Erstellen einer Datei namens Raum Backspace x und dann versuchen zu beobachten jemand es zu löschen: -)
Andere Tipps
Keiner wird eine Datei erstellt.
Eine Datei auf der Festplatte wird von einem identifizierten „inode“. Verzeichnisse Karte Dateinamen Inodes. Ein harter Link bedeutet „einen neuen Dateinamen erstellen in diesem Verzeichnis, dass Punkte auf die gleiche Inode als Datei I Namen.“
Ein symbolischer Link bedeutet „erstellen Sie einen neuen Dateinamen in diesem Verzeichnis, dass die Punkte zu, was auch immer Inode diese anderen Dateien verweisen.“
Wie mangoman weist in einem Kommentar, tut ein symbolischer Link eine Datei mit dem Namen des Link-Ziels erstellen, aber man sollte es nicht zu achten. Es ist eine spezielle Datei, die nicht Ihre Sache ist.