
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” Ja “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
Ja 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);