So finden und entfernen Sie defekte symbolische Links in Linux

Inhalt

Ein Terminalfenster auf einem Linux-Laptop.

Symbolische Links in Linux sind eine fantastische Funktion, aber sie können kaputt gehen und auf nichts zeigen. Nächste, Wir sagen Ihnen, wie Sie defekte symbolische Links finden, überprüfen und ggf. von Ihrem System entfernen.

symbolische Links 101

Symbolische Links, auch genannt “Weiche Links” und “Symbolische Links”, Sie sind eine Form von Verknüpfungen, die auf Dateien und Verzeichnisse verweisen können. Ein symbolischer Link sieht aus wie eine normale Datei oder ein normales Verzeichnis in einem Dateimanagerfenster. Erscheint auch als Eintrag in einer Dateiliste in einem Terminalfenster. Die Datei oder das Verzeichnis, auf die der symbolische Link verweist, kann sich an einer beliebigen Stelle im Dateisystembaum befinden.

Als Beispiel, Nehmen wir an, Sie haben in Ihrem Home-Verzeichnis einen symbolischen Link namens "dave-link", der auf eine Datei namens "text-file.txt" verweist, die sich an einer anderen Stelle im Dateisystembaum befindet.. Die Befehle, die Sie im symbolischen Link verwenden, werden automatisch auf die Datei angewendet, auf die er verweist. Wenn Sie versuchen zu verwenden cat Ö less im symbolischen Link, Sie sehen den Inhalt der Datei “Textdatei.txt”.

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

Wir können leicht einige symbolische Links sehen, indem wir ls im Stammverzeichnis. Einige der Tickets sind in einer anderen Farbe dargestellt; auf unserer Ubuntu-Testmaschine 20.10, in hellblau dargestellt.

Wir schreiben folgendes:

ls /

Wir können einen tieferen Blick mit der -l (lange Liste) Möglichkeit. Wir geben den folgenden Befehl ein, um alle Einträge anzuzeigen “lib” und der einzige Eingang “Behälter”:

ls -l / lib * / bin

Am Anfang jeder Zeile befindet sich ein “l”, was anzeigt, dass das Element ein symbolischer Link ist. Der Text nach „->„Zeigt an, worauf der symbolische Link verweist. In unserem Beispiel, die ziele sind alle verzeichnisse.

Berechtigungen werden als gelesen aufgeführt, Urkunde und Vollstreckung für den Eigentümer, die Gruppe und andere. Dies sind gefälschte Standardeinträge. Sie spiegeln nicht die tatsächlichen Berechtigungen für die Objekte wider, auf die durch die symbolischen Links verwiesen wird. Die Berechtigungen für die Zieldatei oder das Zielverzeichnis haben Priorität und werden vom Dateisystem respektiert.

kaputte symbolische Links

Ein symbolischer Link ist unterbrochen (oder bleibt hängen) wenn die Datei, auf die es verweist, gelöscht oder an einen anderen Ort verschoben wird. Wenn die Deinstallationsroutine einer App nicht richtig funktioniert oder unterbrochen wird, bevor sie abgeschlossen ist, Sie können mit defekten symbolischen Links zurückbleiben.

Wenn jemand eine Datei manuell löscht, ohne zu wissen, dass die symbolischen Links darauf verweisen, Diese symbolischen Links werden nicht mehr funktionieren. Sie werden wie Straßenschilder sein, die auf eine zerstörte Stadt hinweisen.

Wir können dieses Verhalten leicht über einen symbolischen Link namens “Hallo” im aktuellen Verzeichnis. Wir schreiben folgendes, mit ls sehen:

ls -l

Richten Sie ein Programm mit dem Namen “htg” in einem Verzeichnis namens “Behälter”. Wenn wir den symbolischen Link "ausführen", führe das Programm für uns aus:

./Hallo

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

../bin/htg

Wie konnten wir warten, wir bekommen die gleiche antwort. Löschen wir die Programmdatei:

rm ../bin/htg

Jetzt, wenn wir uns den symbolischen Link ansehen, wir sehen, dass es rot ist, weil Linux weiß, dass es kaputt ist. Es sagt uns auch, worauf es früher abzielte, damit wir die Datei ersetzen können, kompilieren Sie das Programm neu oder tun Sie alles Notwendige, um den symbolischen Link zu reparieren.

Beachten Sie, dass, wenn wir versuchen, den symbolischen Link auszuführen, Der Fehler, den wir erhalten, bezieht sich auf den Namen des symbolischen Links, anstelle des Namens des Programms, auf das der symbolische Link zeigt.

Wir schreiben folgendes:

./Hallo

Finden Sie defekte symbolische Links

Modernste Versionen von find habe den xtype Möglichkeit (erweiterter Typ), was die Suche nach defekten symbolischen Links vereinfacht. Wir werden die verwenden l Flagge mit xtype, um Sie anzuweisen, nach Links zu suchen. Verwenden von find und xtype auf dem nächsten weg, ohne die anderen type banderas, Kräfte xtype defekte Links zurückgeben:

finden . -xtyp l

Beim Ausführen des Befehls in unserem Test-Home-Verzeichnis, Es gibt einige defekte symbolische Links. Beachten Sie, dass die Suche standardmäßig rekursiv ist, also durchsucht es alle Unterverzeichnisse automatisch.

Die symbolische Verbindung “Hallo” dass wir absichtlich gebrochen haben, erscheint in der Liste, wie wir erwartet haben. Einer der anderen symbolischen Links bezieht sich auf den Firefox-Browser, und der Rest bezieht sich auf Schnappschüsse.

Wenn wir die Ausgabe durchleiten wc mit dem -l (Linien), Wir können die Zeilen zählen, Das ist dasselbe wie das Zählen defekter symbolischer Links.

Wir schreiben folgendes:

finden . -xtyp l | wc -l

Wir sind darüber informiert, dass wir 24 kaputte symbolische Links, die auf nichts zeigen.

Suche, überprüfen und dann entfernen

Bevor Sie sich beeilen und alle defekten symbolischen Links entfernen, sehen Sie die Ergebnisse der find Befehl. Sehen Sie nach, ob es einen triftigen Grund für einen der defekten symbolischen Links gibt.

Manchmal, der symbolische Link könnte das Problem sein, anstelle der Zieldatei. Wenn der symbolische Link falsch erstellt wurde, es ist möglich, dass es auf nichts zielt, aber das wahre ziel ist da. Dann, die Antwort wäre, den symbolischen Link neu zu erstellen.

Es ist auch möglich, dass ein scheinbar unterbrochener symbolischer Link als etwas anderes verwendet wird, als Dateisperranzeige oder andere Go-Anzeige / nicht gehen. Firefox macht das; das ist der erste symbolische Link auf unserer Liste. Trotz dieses, Firefox wird auf unserem Testcomputer nicht verwendet, es ist also sicher für uns, es zu entfernen.

Es ist auch möglich, dass das Ziel nur periodisch vorhanden ist, und das ist das erwartete verhalten (und gewünscht) dieser speziellen Software. Möglicherweise wird die Zieldatei von einem anderen Computer oder aus der Cloud kopiert, erfüllt seine Funktion und wird dann wieder entfernt, nur im nächsten Zyklus durch ein anderes Programm zu ersetzen.

Der unterbrochene symbolische Link kann auch ein Symptom einer fehlgeschlagenen Softwareinstallation sein.. Dann, anstatt den symbolischen Link zu entfernen, Sie müssen es manuell reparieren oder die Installation wiederholen.

Wenn Sie die defekten Links repariert haben, müssen Sie sie behalten, Wiederholen Sie den Befehl, um zu suchen. Feste symbolische Links sollten in den Suchergebnissen fehlen.

Zur Sicherheit, es ist besser, das Entfernen von symbolischen Links auf Ihre eigenen Verzeichnisse zu beschränken. Seien Sie sehr vorsichtig, wenn Sie diese Befehle als root oder in Systemverzeichnissen ausführen.

Löschen Sie defekte symbolische Links

das -exec Die Option (Lauf) Befehle auf dem ausführen find Suchergebnisse. Wir werden verwenden rm um jeden defekten symbolischen Link zu entfernen. das {} Die Zeichenfolge wird durch den Namen jedes defekten symbolischen Links ersetzt, wenn jeder einzelne von . entdeckt wird find.

Wir müssen ein Semikolon verwenden (;) um die Liste der gewünschten Befehle zu beenden -exec laufen. Wir werden einen Backslash verwenden () zum “Flucht” des Semikolons, daher wird es als Teil des behandelt find Befehl, statt etwas Bash muss handeln.

Wir schreiben folgendes:

finden . -xtype l -exec rm {} ;

Wir kehren zur Eingabeaufforderung zurück, ohne darauf hinzuweisen, dass etwas passiert ist. Um zu überprüfen, ob defekte Links entfernt wurden, Wir wiederholen den Befehl, um nach ihnen zu suchen, auf dem nächsten weg:

finden . -xtyp l

Keine passenden Ergebnisse, was bedeutet, dass defekte symbolische Links entfernt wurden.

Denken Sie daran, zuerst zu überprüfen

Wieder, Nehmen Sie sich immer die Zeit, eine Liste symbolischer Links zu überprüfen, bevor Sie den Befehl ausführen, um sie zu entfernen. Sie können das Entfernen von unsicheren Dateien vermeiden, indem Sie den Befehl ausführen, um sie in den entsprechenden Verzeichnissen zu entfernen.

Als Beispiel, Oben, Wir hätten den Befehl im Verzeichnis ausführen können “.schnappen” und dann den symbolischen Solitaire-Link manuell gelöscht “Hallo”. Dadurch wäre der Firefox-Blockierungs-Symlink intakt geblieben.

setTimeout(Funktion(){
!Funktion(F,B,e,v,n,T,S)
{wenn(f.fbq)Rückkehr;n=f.fbq=Funktion(){n.callMethode?
n.callMethod.apply(n,Argumente):n.queue.push(Argumente)};
wenn(!f._fbq)f._fbq = n;n.drücken=n;n.geladen=!0;n.version=’2.0′;
n.Warteschlange=[];t=b.Element erstellen(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(T,S) } (window, dokumentieren,'Skript',
„https://connect.facebook.net/en_US/fbevents.js’);
fbq('drin', ‘335401813750447’);
fbq('Spur', 'Seitenansicht');
},3000);

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.