Vor einiger Zeit haben wir erklärt, was Softlink und Hardlink sind mit praktischen Beispielen. Manchmal vergessen Sie vielleicht, die unbenutzten Softlinks oder Symlinks zu löschen, die nirgendwo hinführen. Unbenutzte Links im Dateisystem zu behalten, schadet dem System nicht, außer dass es ein wenig Speicherplatz belegt. Es macht also keinen Sinn, sie zu behalten. Suchen und löschen Sie einfach die defekten Symlinks auf Ihrem Linux-System.
Finde defekte Symlinks und lösche sie unter Linux
Es könnte viele Möglichkeiten geben, defekte Symlinks oder Softlinks in Linux zu finden. Hier habe ich zwei Methoden angegeben.
1. Suchen und löschen Sie fehlerhafte Softlinks mit dem Dienstprogramm "Symlinks"
Symlinks ist ein Befehlszeilendienstprogramm zur Verwaltung symbolischer Verbindungen. Es durchsucht das angegebene Verzeichnis und listet die symbolischen Links auf, falls vorhanden.
Symlinks ist in den offiziellen Repositories vieler Linux-Distributionen verfügbar.
So installieren Sie Symlinks auf CentOS , ausführen:
$ sudo yum install symlinks
Auf Fedora :
$ sudo dnf install symlinks
Auf Debian , Ubuntu , Linux Mint :
$ sudo apt-get install symlinks
Unter Ubuntu müssen Sie [universe]
aktivieren Repository.
$ sudo add-apt-repository universe
Führen Sie nach der Installation von Symlinks den folgenden Befehl aus, um defekte symbolische Links zu finden und zu löschen:
$ symlinks -dr <directory-path>
Der obige Befehl sucht nach defekten symbolischen Links im angegebenen Verzeichnis und löscht sie.
Hier,
d
- Löschen Sie baumelnde symbolische Linksr
- rekursiv
Lassen Sie mich Ihnen ein Beispiel zeigen. Ich werde eine Datei mit dem Namen "abc"
erstellen im aktuellen Verzeichnis.
$ touch abc
Als Nächstes erstelle ich einen Symlink namens 'xyz'
für abc
Datei:
$ ln -s abc xyz
Löschen Sie nun die eigentliche Datei, also abc
.
$ rm abc
Wie Sie vielleicht bereits wissen, hat der Symlink nach dem Löschen der eigentlichen Datei keinen Wert mehr. Weil es nur eine Abkürzung ist und jetzt kaputt ist.
Um die defekten Symlinks zu finden, führen Sie Folgendes aus:
$ symlinks .
Bitte den Punkt beachten (.
) Am Ende. Das bedeutet, dass wir im aktuellen Verzeichnis nach defekten Links suchen.
Beispielausgabe:
dangling: /home/sk/xyz -> abc
Hier, xyz
baumelt, weil wir die eigentliche Quelldatei "abc"
gelöscht haben . Lassen Sie uns also diesen defekten Link mit dem Befehl löschen:
$ symlinks -dr .
Beispielausgabe:
dangling: /home/sk/xyz -> abc deleted: /home/sk/xyz -> abc

Führen Sie schließlich symlinks
aus Befehl erneut, um sicherzustellen, dass noch defekte Links vorhanden sind.
2. Suchen und löschen Sie defekte Softlinks mit dem Befehl "Suchen"
Wir können auch find
verwenden Befehl zum Löschen defekter Symlinks.
Führen Sie Folgendes aus, um defekte Symlinks zu finden, aber nicht zu löschen:
$ find . -xtype l
Dieser Befehl listet die defekten Symlinks im aktuellen Verzeichnis auf. Wenn Sie auf einem bestimmten Pfad nach defekten Symlinks suchen möchten, zum Beispiel /usr/local/
, tun:
$ find /usr/local/ -xtype l
Ausgabe:

Der obige Befehl sucht nach defekten Links in /usr/local/
und seine Unterverzeichnisse. Wie Sie in der obigen Ausgabe sehen können, gibt es viele defekte symbolische Links.
Verwenden Sie alternativ den folgenden Befehl, um die nicht verwendeten Symlinks aufzulisten:
$ find /usr/local/ -xtype l ! -exec test -e {} \; -print
Es ist auch möglich zu überprüfen, wohin die defekten Links zeigen. Es empfiehlt sich sicherzustellen, dass wir die beabsichtigten Symlinks löschen.
$ find /usr/local/ -xtype l -exec ls -l {} \+
Beispielausgabe:
lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/drracket -> /home/sk/racket/bin/drracket lrwxrwxrwx 1 root root 27 Jan 21 08:53 /usr/local/bin/gracket -> /home/sk/racket/bin/gracket lrwxrwxrwx 1 root root 32 Jan 21 08:53 /usr/local/bin/gracket-text -> /home/sk/racket/bin/gracket-text lrwxrwxrwx 1 root root 24 Jan 21 08:53 /usr/local/bin/mred -> /home/sk/racket/bin/mred lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/mred-text -> /home/sk/racket/bin/mred-text lrwxrwxrwx 1 root root 23 Jan 21 08:53 /usr/local/bin/mzc -> /home/sk/racket/bin/mzc lrwxrwxrwx 1 root root 24 Jan 21 08:53 /usr/local/bin/mzpp -> /home/sk/racket/bin/mzpp lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/mzscheme -> /home/sk/racket/bin/mzscheme lrwxrwxrwx 1 root root 26 Jan 21 08:53 /usr/local/bin/mztext -> /home/sk/racket/bin/mztext lrwxrwxrwx 1 root root 30 Jan 21 08:53 /usr/local/bin/pdf-slatex -> /home/sk/racket/bin/pdf-slatex lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/plt-games -> /home/sk/racket/bin/plt-games lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/plt-help -> /home/sk/racket/bin/plt-help lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/plt-r5rs -> /home/sk/racket/bin/plt-r5rs lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/plt-r6rs -> /home/sk/racket/bin/plt-r6rs lrwxrwxrwx 1 root root 34 Jan 21 08:53 /usr/local/bin/plt-web-server -> /home/sk/racket/bin/plt-web-server lrwxrwxrwx 1 root root 26 Jan 21 08:53 /usr/local/bin/racket -> /home/sk/racket/bin/racket lrwxrwxrwx 1 root root 24 Jan 21 08:53 /usr/local/bin/raco -> /home/sk/racket/bin/raco lrwxrwxrwx 1 root root 28 Jan 21 08:53 /usr/local/bin/scribble -> /home/sk/racket/bin/scribble lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/setup-plt -> /home/sk/racket/bin/setup-plt lrwxrwxrwx 1 root root 26 Jan 21 08:53 /usr/local/bin/slatex -> /home/sk/racket/bin/slatex lrwxrwxrwx 1 root root 29 Jan 21 08:53 /usr/local/bin/slideshow -> /home/sk/racket/bin/slideshow lrwxrwxrwx 1 root root 27 Jan 21 08:53 /usr/local/bin/swindle -> /home/sk/racket/bin/swindle
Um alle defekten Links auf einmal zu löschen, führen Sie Folgendes aus:
$ sudo find /usr/local/ -xtype l -delete
Oder,
$ sudo find /usr/local/ -xtype l ! -exec test -e {} \; -delete
Ersetzen Sie /usr/local/
mit deinem eigenen Weg.
Empfohlene Lektüre:
- Wie man Symlinks unter Linux auflistet
Hoffe es hilft.