Website-Suche

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:

  1. Erstellen Sie ein Verzeichnis und wechseln Sie dorthin:

    $ mkdir /tmp/symlink_test
    $ cd /tmp/symlink_test
  2. Erstellen Sie eine Datei und ein Verzeichnis:

    $ echo "This is a test file." > testfile
    $ mkdir testdir
  3. Erstellen Sie einen symbolischen Link in testdir, der auf sich selbst verweist (fehlerhaft):

    $ ln -s testfile testdir/testfile
  4. 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">

  5. Der Versuch, auf den Symlink zuzugreifen, führt zu einem Fehler:

    $ cat testdir/testfile

  6. Beispiel für eine problematische Symlink-Erstellung, die den Fehler „Zu viele Ebenen symbolischer Links“ verursacht.
    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:

  1. Erstellen Sie einen symbolischen Link mit einem absoluten Pfad:

    $ ln -s /tmp/symlink_test/testfile /tmp/symlink_test/testdir/testfile2
  2. Dadurch wird ein Symlink testfile2 in testdir erstellt, der absolut auf /tmp/symlink_test/testfile verweist.

  3. 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.

  4. Symlinks mit absolutem Pfad korrekt erstellen

Verwendung relativer Pfade:

  1. Alternativ können Sie einen relativen Pfad mit Bedacht verwenden:

    $ ln -s ../testfile /tmp/symlink_test/testdir/testfile3
  2. Dadurch wird testfile3 in testdir auf testfile verwiesen, wobei ein relativer Pfad verwendet wird, der zwei Ebenen nach oben und dann zu testfile navigiert.

  3. Überprüfung des Symlinks:

    $ cat testdir/testfile3

    Dies wird korrekt ausgegeben: Dies ist eine Testdatei.

  4. Symlinks mit relativem Pfad korrekt erstellen

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.

Verwandte Artikel: