Hace un tiempo explicamos qué es Soft link y Hard link con ejemplos prácticos. En ocasiones, es posible que olvide eliminar los enlaces blandos no utilizados o los enlaces simbólicos que no apuntan a ninguna parte. Mantener enlaces no utilizados en el sistema de archivos no daña el sistema, excepto que ocupa un poco de espacio en disco. Así que no tiene sentido mantenerlos. Simplemente busque y elimine los enlaces simbólicos rotos en su sistema Linux.
Encuentre enlaces simbólicos rotos y elimínelos en Linux
Puede haber muchas formas de encontrar enlaces simbólicos rotos o enlaces blandos en Linux. Aquí he dado dos métodos.
1. Encuentre y elimine enlaces blandos rotos usando la utilidad "Symlinks"
Enlaces simbólicos es una línea de comandos, utilidad de mantenimiento de enlaces simbólicos. Escanea el directorio dado y enumera los enlaces simbólicos, si los hay.
Symlinks está disponible en los repositorios oficiales de muchas distribuciones de Linux.
Para instalar Symlinks en CentOS , ejecuta:
$ sudo yum install symlinks
En Fedora :
$ sudo dnf install symlinks
En Debian , Ubuntu , Linux Mint :
$ sudo apt-get install symlinks
En Ubuntu, debe habilitar el [universe]
repositorio.
$ sudo add-apt-repository universe
Después de instalar Symlinks, ejecute el siguiente comando para buscar y eliminar enlaces simbólicos rotos:
$ symlinks -dr <directory-path>
El comando anterior buscará enlaces simbólicos rotos en el directorio dado y los eliminará.
Aquí,
d
- eliminar enlaces simbólicos colgantesr
- recursivo
Dejame mostrarte un ejemplo. Voy a crear un archivo llamado "abc"
en el directorio actual.
$ touch abc
A continuación, creo un enlace simbólico llamado 'xyz'
para abc
archivo:
$ ln -s abc xyz
Ahora elimine el archivo real, es decir, abc
.
$ rm abc
Como ya sabrá, una vez que eliminamos el archivo real, el enlace simbólico no tiene valor. Porque es solo un atajo y ahora está roto.
Para encontrar los enlaces simbólicos rotos, ejecute:
$ symlinks .
Por favor, tenga en cuenta el punto (.
) al final. Significa que estamos buscando enlaces rotos en el directorio actual.
Salida de muestra:
dangling: /home/sk/xyz -> abc
Aquí, xyz
está colgado porque eliminamos el archivo fuente real "abc"
. Así que eliminemos este enlace roto usando el comando:
$ symlinks -dr .
Salida de muestra:
dangling: /home/sk/xyz -> abc deleted: /home/sk/xyz -> abc
Finalmente, ejecute symlinks
Comando una vez más para asegurarse de que no queden enlaces rotos.
2. Encuentre y elimine enlaces blandos rotos usando el comando "buscar"
También podemos usar find
comando para eliminar enlaces simbólicos rotos.
Para encontrar enlaces simbólicos rotos, pero no eliminarlos, ejecute:
$ find . -xtype l
Este comando enumerará los enlaces simbólicos rotos en el directorio actual. Si desea buscar enlaces simbólicos rotos en una ruta específica, por ejemplo, /usr/local/
, hacer:
$ find /usr/local/ -xtype l
Salida:
El comando anterior buscará enlaces rotos en /usr/local/
y sus subdirectorios. Como puede ver en el resultado anterior, hay muchos enlaces simbólicos rotos.
Alternativamente, use el siguiente comando para enumerar los enlaces simbólicos no utilizados:
$ find /usr/local/ -xtype l ! -exec test -e {} \; -print
También es posible comprobar hacia dónde apuntan los enlaces rotos. Es una buena práctica asegurarse de que estamos eliminando los enlaces simbólicos previstos.
$ find /usr/local/ -xtype l -exec ls -l {} \+
Salida de muestra:
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
Para eliminar todos los enlaces rotos a la vez, ejecute:
$ sudo find /usr/local/ -xtype l -delete
O,
$ sudo find /usr/local/ -xtype l ! -exec test -e {} \; -delete
Reemplazar /usr/local/
con tu propio camino.
Lectura sugerida:
- Cómo listar enlaces simbólicos en Linux
Espero que ayude.