GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo encontrar y eliminar enlaces simbólicos rotos en Linux

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.

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


Linux
  1. Cómo buscar y eliminar directorios recursivamente en Linux

  2. Cómo encontrar y matar el proceso Zombie en Linux

  3. Cómo eliminar búferes de memoria y caché en Linux

  4. Cómo encontrar y eliminar fotos duplicadas en Linux

  5. Cómo crear y eliminar un grupo de usuarios en Linux

Cómo encontrar y eliminar directorios vacíos en Linux

Cómo encontrar y cerrar puertos abiertos en Linux

Cómo encontrar archivos duplicados en Linux y eliminarlos

Cómo encontrar la fecha y hora de instalación del sistema operativo Linux

Cómo encontrar enlaces simbólicos rotos en Linux

Cómo encontrar el PID y PPID de un proceso en Linux