Qualche tempo fa abbiamo spiegato cosa sono i collegamenti soft e hard link con esempi pratici. A volte potresti dimenticare di eliminare i collegamenti software non utilizzati o i collegamenti simbolici che non puntano da nessuna parte. Mantenere i collegamenti inutilizzati sul filesystem non danneggia il sistema, tranne occupare un po' di spazio su disco. Quindi non ha senso tenerli. Trova ed elimina i collegamenti simbolici interrotti sul tuo sistema Linux.
Trova collegamenti simbolici interrotti ed eliminali su Linux
Potrebbero esserci molti modi per trovare collegamenti simbolici interrotti o collegamenti software in Linux. Qui ho fornito due metodi.
1. Trova ed elimina i collegamenti software interrotti utilizzando l'utilità "Collegamenti simbolici"
Collegamenti simbolici è una riga di comando, utilità di manutenzione del collegamento simbolico. Scansiona la directory data ed elenca i collegamenti simbolici se ce ne sono.
Symlinks è disponibile nei repository ufficiali di molte distribuzioni Linux.
Per installare i collegamenti simbolici su CentOS , esegui:
$ sudo yum install symlinks
Su Fedora :
$ sudo dnf install symlinks
Su Debian , Ubuntu , Linux Mint :
$ sudo apt-get install symlinks
Su Ubuntu , devi abilitare il [universe]
deposito.
$ sudo add-apt-repository universe
Dopo aver installato i collegamenti simbolici, eseguire il comando seguente per trovare ed eliminare i collegamenti simbolici interrotti:
$ symlinks -dr <directory-path>
Il comando precedente eseguirà la scansione dei collegamenti simbolici interrotti nella directory specificata e li cancellerà.
Ecco,
d
- elimina i collegamenti simbolici penzolantir
- ricorsivo
Lascia che ti mostri un esempio. Creerò un file chiamato "abc"
nella directory corrente.
$ touch abc
Quindi creo un collegamento simbolico chiamato 'xyz'
per abc
file:
$ ln -s abc xyz
Ora elimina il file effettivo, ad esempio abc
.
$ rm abc
Come forse già saprai, una volta eliminato il file effettivo, il collegamento simbolico non ha valore. Perché è solo una scorciatoia e ora è interrotta.
Per trovare i collegamenti simbolici interrotti, esegui:
$ symlinks .
Per favore notare il punto (.
) alla fine. Significa che stiamo cercando collegamenti interrotti nella directory corrente.
Risultato di esempio:
dangling: /home/sk/xyz -> abc
Qui, xyz
è sospeso perché abbiamo eliminato il file sorgente effettivo "abc"
. Quindi eliminiamo questo collegamento interrotto usando il comando:
$ symlinks -dr .
Risultato di esempio:
dangling: /home/sk/xyz -> abc deleted: /home/sk/xyz -> abc
Infine, esegui symlinks
comando ancora una volta per assicurarsi che ci siano collegamenti interrotti rimanenti.
2. Trova ed elimina i collegamenti software interrotti utilizzando il comando "trova"
Possiamo anche usare find
comando per eliminare i collegamenti simbolici interrotti.
Per trovare collegamenti simbolici interrotti, ma non eliminarli, esegui:
$ find . -xtype l
Questo comando elencherà i collegamenti simbolici interrotti nella directory corrente. Se desideri cercare collegamenti simbolici interrotti su un percorso specifico, ad esempio /usr/local/
, fai:
$ find /usr/local/ -xtype l
Risultato:
Il comando precedente cercherà i collegamenti interrotti in /usr/local/
e le sue sottodirectory. Come puoi vedere nell'output sopra, ci sono molti collegamenti simbolici interrotti.
In alternativa, utilizzare il comando seguente per elencare i collegamenti simbolici non utilizzati:
$ find /usr/local/ -xtype l ! -exec test -e {} \; -print
È anche possibile controllare dove puntano i collegamenti interrotti. È buona norma assicurarsi di eliminare i collegamenti simbolici previsti.
$ find /usr/local/ -xtype l -exec ls -l {} \+
Risultato di esempio:
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
Per eliminare tutti i collegamenti interrotti in una volta, eseguire:
$ sudo find /usr/local/ -xtype l -delete
Oppure,
$ sudo find /usr/local/ -xtype l ! -exec test -e {} \; -delete
Sostituisci /usr/local/
con il tuo percorso.
Lettura consigliata:
- Come elencare i collegamenti simbolici su Linux
Spero che aiuti.