So beheben Sie: Fehler bei zu vielen Ebenen symbolischer Links
Der Fehler „Zu viele Ebenen symbolischer Links“ weist typischerweise auf ein Problem hin, bei dem ein symbolischer Link direkt oder indirekt auf sich selbst verweist und eine Endlosschleife erzeugt. Diese Schleife verhindert den Abschluss von Vorgängen, die den Symlink betreffen, z. B. das Lesen oder Auflisten von Inhalten. Um diesen Fehler zu vermeiden, ist es wichtig zu verstehen, wie der Befehl ln
unter Linux ordnungsgemäß zum Erstellen symbolischer Links verwendet wird.
In diesem Tutorial lernen Sie:
- Was verursacht den Fehler „Zu viele Ebenen symbolischer Links“?
- So erstellen Sie symbolische Links mithilfe absoluter und relativer Pfade ordnungsgemäß
- So diagnostizieren und beheben Sie Schleifen in symbolischen Links
Den Fehler „Zu viele Ebenen symbolischer Links“ verstehen und verhindern
Was verursacht diesen Fehler?
Dieser Fehler tritt auf, wenn ein symbolischer Link auf sich selbst verweist (entweder direkt oder über einen anderen symbolischen Link), wodurch eine unauflösbare Referenzschleife entsteht. Diese Situation ist vergleichbar mit einer Reihe von Anweisungen, die zum Ausgangspunkt zurückführen und nirgendwohin führen.
Beispiel für problematische Symlink-Erstellung:
-
Erstellen Sie ein Verzeichnis und wechseln Sie dorthin:
$ mkdir /tmp/symlink_test $ cd /tmp/symlink_test
Erstellen Sie eine Datei und ein Verzeichnis:
$ echo "This is a test file." > testfile $ mkdir testdir
Erstellen Sie einen symbolischen Link in
testdir
, der auf sich selbst verweist (fehlerhaft):$ ln -s testfile testdir/testfile
Der Versuch, auf den Symlink zuzugreifen, führt zu einem Fehler:
$ cat testdir/testfile
Dieser Befehl versucht, einen symbolischen Link testfile
in testdir
zu erstellen, der auf ../testdir/testfile
verweist. Die Referenz verweist zurück auf den Symlink selbst und bildet eine Schleife. data-fuse="22189504506">
Dies wird Folgendes ausgeben: cat: testdir/config: Zu viele Ebenen symbolischer Links
Symlinks richtig erstellen:
Um diesen Fehler zu vermeiden, sollten Sie sicherstellen, dass das Ziel des Symlinks korrekt auf das beabsichtigte Ziel verweist und nicht zurück auf den Symlink selbst oder einen anderen Symlink, der dorthin führt.
Verwendung absoluter Pfade:
Erstellen Sie einen symbolischen Link mit einem absoluten Pfad:
$ ln -s /tmp/symlink_test/testfile /tmp/symlink_test/testdir/testfile2
-
Beim Zugriff auf diesen Symlink sollte nun der Inhalt von
testfile2
korrekt angezeigt werden:$ cat /tmp/symlink_test/testdir/testfile2
Dies wird korrekt ausgegeben: Dies ist eine Testdatei.
Dadurch wird ein Symlink testfile2
in testdir
erstellt, der absolut auf /tmp/symlink_test/testfile
verweist.
Verwendung relativer Pfade:
Alternativ können Sie einen relativen Pfad mit Bedacht verwenden:
$ ln -s ../testfile /tmp/symlink_test/testdir/testfile3
Überprüfung des Symlinks:
$ cat testdir/testfile3
Dies wird korrekt ausgegeben: Dies ist eine Testdatei.
Dadurch wird testfile3
in testdir
auf testfile
verwiesen, wobei ein relativer Pfad verwendet wird, der zwei Ebenen nach oben und dann zu testfile
navigiert.
Vereinfachte Erstellung symbolischer Links: Merken der richtigen Pfadsyntax – Anmerkungen des Autors
Meine beste Strategie, um mit symbolischen Links umzugehen und daran zu denken, sie richtig zu verwenden – ob mit relativen oder absoluten Pfaden – besteht darin, sich diese Syntax zu merken:
$ ln -s <path to original file from the target directory whether relative or absolute> <target file or directory>
Betrachten wir dieses Beispiel aus dem Verzeichnis /home/linuxconfig/
:
$ mkdir test
$ echo "linuxconfig.org" > orig_file
$ ln -s ../orig_file test/
$ ln -s ../orig_file test/sym_file1
$ ln -s /home/linuxconfig/../../tmp/../home/linuxconfig/orig_file test/sym_file2
$ ln -s ../../../home/linuxconfig/orig_file test/sym_file3
$ tree test/
Wie Sie dem obigen Beispiel entnehmen können, können Sie sogar relative und absolute Pfade kombinieren und dennoch funktioniert der symbolische Link, solange er korrekt auf die Originaldatei verweist. Dies ist kein leicht zu verstehendes Konzept, aber stellen Sie sich das erste Argument als Pfad zur Originaldatei aus dem Zielverzeichnis vor. Wenn Sie sich im Zielverzeichnis befinden, muss der Pfad, der als erstes Argument für den Befehl ln
angegeben wird, von dort aus korrekt sein. Um ein besseres Verständnis über relative und absolute Pfade zu erlangen, lesen Sie bitte den Abschnitt Relativer vs. absoluter Pfad als Teil unseres Bash-Scripting-Tutorials.
Abschluss
Die korrekte Verwaltung symbolischer Links ist für die Aufrechterhaltung einer funktionierenden Dateisystemstruktur von entscheidender Bedeutung. Indem Sie verstehen, wie Sie die Ziele von Symlinks richtig festlegen, entweder über absolute oder relative Pfade, können Sie Fehler im Zusammenhang mit unendlichen Auflösungsschleifen verhindern, wie zum Beispiel „Zu viele Ebenen symbolischer Links“. Stellen Sie immer sicher, dass Ihre Symlinks auf die richtigen Ziele verweisen, und überarbeiten Sie alle vorhandenen Links, wenn dieser Fehler auftritt.