GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So finden und löschen Sie defekte Symlinks in Linux

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.

Es könnte viele Möglichkeiten geben, defekte Symlinks oder Softlinks in Linux zu finden. Hier habe ich zwei Methoden angegeben.

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 Links
  • r - 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.

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.


Linux
  1. So suchen und entfernen Sie Verzeichnisse rekursiv unter Linux

  2. So finden und töten Sie den Zombie-Prozess in Linux

  3. So löschen Sie Speicherpuffer und Cache in Linux

  4. So finden und entfernen Sie doppelte Fotos in Linux

  5. Wie lösche ich ein Verzeichnis und einen Ordner in Linux?

So finden und löschen Sie leere Verzeichnisse in Linux

So finden und schließen Sie offene Ports in Linux

So finden Sie doppelte Dateien in Linux und entfernen sie

So finden Sie das Installationsdatum und die Uhrzeit des Linux-Betriebssystems

So finden Sie defekte Symlinks in Linux

So finden Sie die PID und PPID eines Prozesses in Linux