Die symbolischen Verbindungen auf Linux sind ein fantastisches Feature, aber sie können gebrochen werden und auf nichts zeigen. Hier finden Sie defekte symbolische Links, überprüfen Sie sie und entfernen Sie sie von Ihrem System, wenn Sie möchten.
Symbolische Verbindungen 101.
Symbolische Links , auch "Soft Links" und "Symlinks" genannt, sind eine Form von Verknüpfungen, die auf Dateien und Verzeichnisse hinweisen können. Ein Symlink sieht in einem Dateimanagerfenster wie eine regelmäßige Datei oder ein Verzeichnis aus. Es zeigt auch als Eintrag in einem Dateieintrag in einem Terminalfenster. Die Datei oder das Verzeichnis, an das die Symlink-Punkte in der Dateisystemstruktur überall sein können.
Nehmen wir zum Beispiel an, Sie haben ein Symlink in Ihrem Home-Verzeichnis namens "Dave-Link", das auf eine Datei namens "text-file.txt" zeigt, die sich an einem anderen Ort in der Dateisystemstruktur befindet. Befehle, die Sie auf dem Symlink verwenden, werden automatisch auf die Datei angewendet, auf die sie zeigt. Wenn Sie versuchen zu verwenden
Katze
oder
weniger
Auf dem Symlink sehen Sie tatsächlich den Inhalt der Datei "text-file.txt".
Eine Standard-Linux-Installation enthält viele Symlinks. Auch wenn Sie nicht selbst erstellen, verwendet das Betriebssystem sie. Anwendungsinstallationsroutinen verwenden häufig Symlinks, um auf Ausführende Dateien zu zeigen. Wenn die Software aktualisiert wird, wird die Binärdatei durch die neue Version ersetzt, und alle Symlinks funktionieren wie zuvor, solange der Name der neuen Datei das gleiche wie das Alte ist.
Wir können leicht einige Symlinks mit der Verwendung sehen
ls.
im Stammverzeichnis. Einige der Einträge werden in einer anderen Farbe angezeigt.
Ubuntu 20.10.
Testmaschine, sie werden in hellblau angezeigt.
Wir geben Folgendes ein:
LS /
Wir können einen tieferen Blick unter Verwendung der
-l.
(lange Auflistung) Option. Wir geben den folgenden Befehl ein, um alle Einträge "LIB" und den einzelnen "Bin" -EN-Eintrag anzusehen:
ls -l / lib * / bin
Zu Beginn jeder Zeile ist ein "l", der anzeigt, dass der Artikel ein Symlink ist. Der Text nach "- & gt;" zeigt an, was das Symlink zeigt. In unserem Beispiel sind die Ziele alle Verzeichnisse.
Die Berechtigungen werden als Lesen, Schreiben und Ausführen für den Eigentümer, der Gruppe und anderen aufgeführt. Dies sind Standard-Fake-Einträge. Sie spiegeln nicht die tatsächlichen Berechtigungen für die Objekte wider, an denen die Symlinks zeigen. Es sind die Berechtigungen für die Zieldatei oder das Verzeichnis, die Vorrang vornehmen und vom Dateisystem geehrt werden.
Gebrochene Symlinks.
Ein Symlink ist defekt (oder linkert baumelend), wenn die Datei, an der IT-Punkte gelöscht oder an einen anderen Ort verschoben wird. Wenn die Deinstallationsroutine einer Anwendung nicht ordnungsgemäß funktioniert oder unterbrochen wird, bevor es abgeschlossen ist, bleiben Sie möglicherweise mit defekten Symlinks.
Wenn jemand manuell eine Datei löscht, ohne Symlinks zu kennen, funktionieren Sie darauf, dass diese Symlinks nicht mehr funktionieren. Sie werden wie Straßenschilder sein, die auf eine Stadt zeigen, die bulldoziert wurde.
Wir können dieses Verhalten leicht mit einem Symlink namens "Hello" im aktuellen Verzeichnis sehen. Wir geben das Folgende ein, verwenden
ls.
Es zu sehen:
LS -L
Es zeigt auf ein Programm namens "HTG" in einem Verzeichnis namens "Bin." Wenn wir das Symlink "ausführen", führt dies das Programm für uns aus:
./ Hallo
Wir können jetzt überprüfen, ob dies das passiert, indem wir das Programm direkt ausführen:
../ bin / htg
Wie erwartet erhalten wir die gleiche Antwort. Lassen Sie uns die Programmdatei löschen:
RM ../BIN/HTG
Wenn wir uns jetzt auf das Symlink ansehen, sehen wir, dass es in Rot aufgeführt ist, weil Linux weiß, dass es kaputt ist. Es sagt uns auch an, was es verwendet wird, um zu zeigen, dass wir die Datei ersetzen können, um das Programm neu kompilieren oder zu tun, was erforderlich ist, um das Symlink zu reparieren.
Beachten Sie, dass, wenn wir versuchen, den Symlink auszuführen, der Fehler, den wir erhalten, den Symlink-Namen, und nicht der Name des Programms, an das die Symlink-Punkte angezeigt werden.
Wir geben Folgendes ein:
./ Hallo
Gebrochene Symlinks finden.
Die meisten modernen Versionen von
finden
habe den
Xtype.
(erweiterte Typ) Option,
was vereinfacht, defekte Symlinks zu finden
. Wir verwenden das
L.
kennzeichnen
Xtype.
, um es zu sagen, nach Links zu suchen. Verwendet
finden
und
Xtype.
wie folgt ohne einen der anderen
Typ
Flaggen, Kräfte.
Xtype.
Um gebrochene Links zurückzugeben:
Finden. -XTYPE L
Wenn Sie den Befehl in unserem Testhome-Verzeichnis ausführen, findet ein paar gebrochene Symlinks. Beachten Sie, dass die Suche standardmäßig rekursiv ist, sucht es also automatisch alle Unterverzeichnisse.
Der "Hallo" -Symlink, den wir mit dem Zweck gebrochen haben, ist wie erwartet aufgeführt. Einer der anderen Symlinks hängt mit dem Firefox-Browser zusammen, und der Rest ist mit Snaps verbunden.
Wenn wir den Ausgang durchleiten
Toilette
mit dem
-l.
(Linien) Option, wir können die Zeilen zählen, was dasselbe ist, wie die defekten Symlinks zählen.
Wir geben Folgendes ein:
Finden. -XTYPE L |. WC -L
Wir sind informiert, dass wir 24 gebrochene Symlinks auf nichts zeigen.
Finden, überprüfen und dann entfernen
Bevor Sie einstürzen und alle gebrochenen Symlinks löschen, schauen Sie durch die Ergebnisse der
finden
Befehl. Sehen Sie, ob es einen gültigen Grund für eine der gebrochenen Symlinks gibt.
Manchmal ist das Symlink anstelle der Zieldatei möglicherweise das Problem. Wenn das Symlink falsch erstellt wurde, könnte es auf nichts zeigen, aber das eigentliche Ziel ist vorhanden. Das erneute Erstellen des Symlinks wäre der Fix in diesem Fall.
Es ist auch möglich, dass ein anscheinend zerbrochener Symlink als etwas anderes verwendet wird, beispielsweise ein Indikator für eine Dateisperre oder ein anderes GO / NO GO-Indikator. Firefox macht das; Das ist das, was das erste Symlink in unserer Liste ist. Firefox wird jedoch nicht auf unserer Testmaschine verwendet, daher ist es sicher, dass wir es löschen können.
Es ist auch möglich, dass das Ziel nur regelmäßig vorhanden ist, und dies ist das erwartete (und gewünschte) Verhalten dieser bestimmten Software. Vielleicht wird die Zieldatei von einem anderen Computer oder der Cloud kopiert, es führt seine Funktion aus, und wird dann wieder gelöscht, nur um durch ein anderes Programm im nächsten Zyklus ersetzt zu werden.
Das defekte Symlink könnte auch ein Symptom einer Software-Installation sein, die fehlgeschlagen ist. Wenn Sie in diesem Fall das Symlink löschen, sollten Sie ihn entweder manuell beheben oder die Installation wiederholen.
Wenn Sie die defekten Links behoben haben, müssen Sie den Befehl wiederholen, um die Suche durchzuführen. Die festen Symlinks sollten dann in den Suchergebnissen abwesend sein.
Für den Safety willen ist es am besten, Ihre Symlink-Removals in Ihre eigenen Verzeichnisse zu beschränken. Seien Sie äußerst vorsichtig, um diese Befehle als root oder auf Systemverzeichnissen auszuführen.
Defekte Symlinks entfernen.
Die
-Exec.
(EXECUTE) Option läuft Befehle auf der
finden
Suchergebnisse. Wir werden benutzen
Rm
um jedes defekte Symlink zu löschen. Die
{}
String wird durch den Namen jedes zerbrochenen Symlinks ersetzt, da jeder von entdeckt wird
finden
.
Wir müssen ein Semikolon verwenden (
;
) Um die Liste der von Ihnen gewünschten Befehle zu beenden
-Exec.
laufen. Wir werden ein Backslash verwenden (
\
) das Semikolon "entkommen", so dass es als Teil der
finden
Befehl, eher als etwas
Bash
sollte eingehen.
Wir geben Folgendes ein:
Finden. -XTYPE L-EXEC RM {} \;
Wir sind an die Eingabeaufforderung zurückgegeben, ohne dass etwas passiert ist. Um zu überprüfen, ob die kaputten Links entfernt wurden, wiederholen wir den Befehl, um nach ihnen zu suchen:
Finden. -XTYPE L
Es gibt keine passenden Ergebnisse, was bedeutet, dass die gebrochenen Symlinks entfernt wurden.
Denken Sie daran, zuerst zu überprüfen
Nehmen Sie sich immer wieder an, um eine Liste von Symlinks zu überprüfen, bevor Sie den Befehl ausführen, um sie zu löschen. Sie können vermeiden, dass Sie nicht gelöscht werden, ob Sie sich nicht sicher sind, indem Sie den Befehl ausführen, um sie in den entsprechenden Verzeichnissen zu löschen.
Beispielsweise hätten wir den Befehl im Verzeichnis " Dies hätte das Firefox-Lock-Symlink unberührt verlassen.