So finden und löschen Sie defekte Symlinks unter Linux

Ein Terminalfenster auf einem Linux-Laptop.

Fatmawati Achmad Zaenuri/Shutterstock



Die symbolischen Links unter Linux sind ein fantastisches Feature, aber sie können kaputt gehen und auf nichts zeigen. So finden Sie defekte symbolische Links, überprüfen sie und entfernen sie bei Bedarf aus Ihrem System.

Symbolische Links 101

Symbolische Links , auch Softlinks und Symlinks genannt, sind eine Form von Verknüpfungen, die auf Dateien und Verzeichnisse verweisen können. Ein Symlink sieht wie eine normale Datei oder ein normales Verzeichnis in einem Dateimanagerfenster aus. Es wird auch als Eintrag in einer Dateiliste in einem Terminalfenster angezeigt. Die Datei oder das Verzeichnis, auf die der Symlink verweist, kann sich an einer beliebigen Stelle im Dateisystembaum befinden.





Angenommen, Sie haben in Ihrem Home-Verzeichnis einen Symlink namens dave-link, der auf eine Datei namens text-file.txt verweist, die sich an einer anderen Stelle im Dateisystembaum befindet. Befehle, die Sie für den symbolischen Link verwenden, werden automatisch auf die Datei angewendet, auf die er verweist. Wenn Sie versuchen, |_+_| . zu verwenden oder |_+_| Auf dem Symlink sehen Sie tatsächlich den Inhalt der Datei text-file.txt.

Eine Standard-Linux-Installation enthält viele symbolische Links. Auch wenn Sie selbst keine erstellen, verwendet das Betriebssystem sie. Anwendungsinstallationsroutinen verwenden häufig Symlinks, um auf ausführbare Dateien zu verweisen. Wenn die Software aktualisiert wird, wird die Binärdatei durch die neue Version ersetzt und alle symbolischen Links funktionieren wie zuvor, solange der Name der neuen Datei mit dem alten identisch ist.



Wir können einige Symlinks leicht sehen, indem wir |_+_| . verwenden im Stammverzeichnis. Einige der Einträge werden in einer anderen Farbe angezeigt – auf unserem Ubuntu 20.10 Testmaschine werden sie hellblau angezeigt.

Wir geben folgendes ein:

cat



Anzeige

Wir können einen tieferen Blick darauf werfen, indem wir |_+_| . verwenden (lange Auflistung) Option. Wir geben den folgenden Befehl ein, um alle lib-Einträge und den einzelnen bin-Eintrag anzuzeigen:

less

Am Anfang jeder Zeile steht ein l, das angibt, dass es sich bei dem Element um einen symbolischen Link handelt. Der Text nach -> zeigt, worauf der Symlink zeigt. In unserem Beispiel sind die Ziele alle Verzeichnisse.

Die Berechtigungen werden für den Besitzer, die Gruppe und andere als Lesen, Schreiben und Ausführen aufgeführt. Dies sind standardmäßige gefälschte Einträge. Sie spiegeln nicht die tatsächlichen Berechtigungen für die Objekte wider, auf die die Symlinks zeigen. Es sind die Berechtigungen für die Zieldatei oder das Zielverzeichnis, die Vorrang haben und vom Dateisystem berücksichtigt werden.

Defekte Symlinks

Ein symbolischer Link wird unterbrochen (oder bleibt hängen), wenn die Datei, auf die er verweist, gelöscht oder an einen anderen Ort verschoben wird. Wenn die Deinstallationsroutine einer Anwendung nicht richtig funktioniert oder unterbrochen wird, bevor sie abgeschlossen ist, bleiben möglicherweise defekte symbolische Links zurück.

Wenn jemand eine Datei manuell löscht, ohne zu wissen, dass Symlinks darauf verweisen, funktionieren diese Symlinks nicht mehr. Sie werden wie Straßenschilder sein, die auf eine Stadt hinweisen, die planiert wurde.

Wir können dieses Verhalten leicht erkennen, indem wir einen symbolischen Link namens hello im aktuellen Verzeichnis verwenden. Wir geben Folgendes ein und verwenden |_+_| Es zu sehen:

lsAnzeige

Es zeigt auf ein Programm namens htg in einem Verzeichnis namens bin. Wenn wir den Symlink ausführen, führt er das Programm für uns aus:

-l

Wir können jetzt überprüfen, ob dies der Fall ist, indem wir das Programm direkt ausführen:

ls

Wie erwartet bekommen wir die gleiche Antwort. Löschen wir die Programmdatei:

find

Wenn wir uns jetzt den Symlink ansehen, sehen wir, dass er rot aufgelistet ist, weil Linux weiß, dass er defekt ist. Es sagt uns auch, worauf es früher gezeigt hat, damit wir die Datei ersetzen, das Programm neu kompilieren oder alles Notwendige tun können, um den symbolischen Link zu reparieren.

Beachten Sie, dass, wenn wir versuchen, den Symlink auszuführen, der Fehler, den wir erhalten, auf den Namen des Symlinks verweist und nicht auf den Namen des Programms, auf das der Symlink verweist.

Wir geben folgendes ein:

xtype

Defekte Symlinks finden

Modernste Versionen von |_+_| habe die |_+_| (erweiterter Typ) Option, was das Auffinden defekter Symlinks vereinfacht . Wir verwenden die |_+_| mit |_+_| markieren, um nach Links zu suchen. Verwenden von |_+_| und |_+_| wie folgt, ohne die anderen |_+_| Flaggen, Kräfte |_+_| um defekte Links zurückzugeben:

l

Wenn Sie den Befehl in unserem Test-Home-Verzeichnis ausführen, werden einige defekte Symlinks gefunden. Beachten Sie, dass die Suche standardmäßig rekursiv ist, sodass alle Unterverzeichnisse automatisch durchsucht werden.

Der Hallo-Symlink, den wir absichtlich abgebrochen haben, ist wie erwartet aufgeführt. Einer der anderen Symlinks bezieht sich auf den Firefox-Browser, und der Rest ist mit Snaps verbunden.

Wenn wir die Ausgabe über |_+_| . weiterleiten mit dem |_+_| (lines) können wir die Zeilen zählen, was dem Zählen der unterbrochenen symbolischen Links entspricht.

Wir geben folgendes ein:

xtype

Uns wurde mitgeteilt, dass wir 24 defekte Symlinks haben, die auf nichts zeigen.

Suchen, überprüfen und dann entfernen

Sehen Sie sich die Ergebnisse der |_+_| . an, bevor Sie alle defekten symbolischen Links löschen Befehl. Sehen Sie nach, ob es einen triftigen Grund für einen der defekten symbolischen Links gibt.

Manchmal kann der Symlink das Problem sein und nicht die Zieldatei. Wenn der Symlink falsch erstellt wurde, zeigt er möglicherweise auf nichts, aber das eigentliche Ziel ist vorhanden. Das erneute Erstellen des Symlinks wäre in diesem Fall die Lösung.

Es ist auch möglich, dass ein scheinbar defekter Symlink als etwas anderes verwendet wird, z. B. als Indikator für eine Dateisperre oder einen anderen Go/No-Go-Indikator. Firefox tut dies; das ist der erste Symlink in unserer Liste. Firefox wird auf unserem Testcomputer jedoch nicht verwendet, daher können wir ihn sicher löschen.

Anzeige

Es ist auch möglich, dass das Ziel nur periodisch vorhanden ist und dies das erwartete (und gewünschte) Verhalten dieser bestimmten Software ist. Vielleicht wird die Zieldatei von einem anderen Computer oder der Cloud kopiert, sie erfüllt ihre Funktion und wird dann wieder gelöscht, nur um im nächsten Zyklus durch ein anderes Programm ersetzt zu werden.

Der defekte Symlink kann auch ein Symptom für eine fehlgeschlagene Softwareinstallation sein. In diesem Fall sollten Sie den symbolischen Link, anstatt ihn zu löschen, entweder manuell reparieren oder die Installation wiederholen.

Wenn Sie die defekten Links behoben haben, die Sie behalten müssen, wiederholen Sie den Befehl, um die Suche durchzuführen. Die fixierten Symlinks sollten dann in den Suchergebnissen fehlen.

Aus Sicherheitsgründen ist es am besten, das Entfernen von Symlinks auf Ihre eigenen Verzeichnisse zu beschränken. Seien Sie äußerst vorsichtig, wenn Sie diese Befehle als Root oder in Systemverzeichnissen ausführen.

Entfernen defekter Symlinks

Die |_+_| (Ausführen) Option führt Befehle auf dem |_+_| . aus Suchergebnisse. Wir verwenden |_+_| um jeden defekten symbolischen Link zu löschen. Die |_+_| string wird durch den Namen jedes defekten symbolischen Links ersetzt, wenn jeder von |_+_| entdeckt wird.

Wir müssen ein Semikolon (|_+_|) verwenden, um die Liste der gewünschten Befehle zu beenden |_+_| laufen. Wir verwenden einen umgekehrten Schrägstrich (|_+_|), um das Semikolon zu maskieren, sodass es als Teil des |_+_| . behandelt wird Befehl statt etwas |_+_| wirken soll.

Wir geben folgendes ein:

find

Anzeige

Wir kehren zur Eingabeaufforderung zurück, ohne dass darauf hingewiesen wird, dass etwas passiert ist. Um zu überprüfen, ob die defekten Links entfernt wurden, wiederholen wir den Befehl, um nach ihnen zu suchen, wie folgt:

xtype

Es gibt keine übereinstimmenden Ergebnisse, was bedeutet, dass die defekten Symlinks entfernt wurden.

Denken Sie daran, zuerst zu überprüfen

Nehmen Sie sich auch hier immer die Zeit, eine Liste mit symbolischen Links zu überprüfen, bevor Sie den Befehl zum Löschen ausführen. Sie können das Löschen von Dateien vermeiden, bei denen Sie sich nicht sicher sind, indem Sie den Befehl ausführen, um sie in den entsprechenden Verzeichnissen zu löschen.

Zum Beispiel hätten wir oben den Befehl im .snap-Verzeichnis ausführen und dann den einsamen hallo-Symlink manuell entfernen können. Dadurch wäre der Symlink für die Firefox-Sperre unangetastet geblieben.

WEITER LESEN Profilfoto von Dave McKay Dave McKay
Dave McKay benutzte zum ersten Mal Computer, als Lochstreifen in Mode waren, und programmiert seitdem. Nach über 30 Jahren in der IT-Branche ist er heute hauptberuflich Technologiejournalist. Im Laufe seiner Karriere war er als freiberuflicher Programmierer, Leiter eines internationalen Softwareentwicklungsteams, Projektleiter für IT-Services und zuletzt als Datenschutzbeauftragter tätig. Sein Schreiben wurde von howtogeek.com, cloudavvyit.com, itenterpriser.com und opensource.com veröffentlicht. Dave ist ein Linux-Evangelist und Open-Source-Verfechter.
Vollständige Biografie lesen

Interessante Artikel