Frage

Ich wollte nur klären, ob eine harte / symbolische Verbindung tatsächlich eine Datei, die ??

erstellt wird

Ich 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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top