Cómo solucionarlo: Demasiados niveles de error de enlaces simbólicos
El error "Demasiados niveles de enlaces simbólicos" normalmente indica un problema en el que un enlace simbólico apunta a sí mismo directa o indirectamente, creando un bucle infinito. Este bucle evita la finalización de operaciones que involucran el enlace simbólico, como leer o enumerar contenidos. Comprender cómo utilizar correctamente el comando ln
en Linux para crear enlaces simbólicos es crucial para evitar este error.
En este tutorial aprenderás:
- ¿Qué causa el error "Demasiados niveles de enlaces simbólicos"?
- Cómo crear correctamente enlaces simbólicos utilizando rutas absolutas y relativas
- Cómo diagnosticar y arreglar bucles en enlaces simbólicos
Comprender y prevenir el error "Demasiados niveles de enlaces simbólicos"
¿Qué causa este error?
Este error ocurre cuando un enlace simbólico hace referencia a sí mismo (ya sea directamente o mediante otro enlace simbólico), lo que crea un bucle de referencia irresoluble. Esta situación es análoga a recibir una serie de instrucciones que regresan al punto de partida y no conducen a ninguna parte.
Ejemplo de creación problemática de enlaces simbólicos:
-
Cree un directorio y cámbielo:
$ mkdir /tmp/symlink_test $ cd /tmp/symlink_test
Crea un archivo y un directorio:
$ echo "This is a test file." > testfile $ mkdir testdir
Cree un enlace simbólico en
testdir
apuntando a sí mismo (erróneo):$ ln -s testfile testdir/testfile
Al intentar acceder al enlace simbólico se produce un error:
$ cat testdir/testfile
Este comando intenta crear un enlace simbólico testfile
en testdir
que apunte a ../testdir/testfile
. La referencia apunta al propio enlace simbólico, formando un bucle. fusible de datos="22189504506">
Esto generará: cat: testdir/config: Demasiados niveles de enlaces simbólicos
Crear correctamente enlaces simbólicos:
Para evitar este error, debe asegurarse de que el destino del enlace simbólico apunte correctamente al destino previsto y no al enlace simbólico en sí ni a otro enlace simbólico que conduzca a él.
Usando caminos absolutos:
Cree un enlace simbólico usando una ruta absoluta:
$ ln -s /tmp/symlink_test/testfile /tmp/symlink_test/testdir/testfile2
-
Acceder a este enlace simbólico ahora debería mostrar correctamente el contenido de
testfile2
:$ cat /tmp/symlink_test/testdir/testfile2
Esto generará correctamente: Este es un archivo de prueba.
Esto crea un enlace simbólico testfile2
en testdir
que apunta absolutamente a /tmp/symlink_test/testfile
.
Usando rutas relativas:
Alternativamente, utilice sabiamente una ruta relativa:
$ ln -s ../testfile /tmp/symlink_test/testdir/testfile3
Comprobando el enlace simbólico:
$ cat testdir/testfile3
Esto generará correctamente: Este es un archivo de prueba.
Esto apunta testfile3
en testdir
a testfile
usando una ruta relativa que navega hacia arriba dos niveles y luego a testfile
.
Creación de enlaces simbólicos simplificada: recordar la sintaxis de la ruta correcta – Notas del autor
Mi mejor estrategia para lidiar con enlaces simbólicos y recordar usarlos correctamente, ya sea usando rutas relativas o absolutas, es recordar esta sintaxis:
$ ln -s <path to original file from the target directory whether relative or absolute> <target file or directory>
Consideremos este ejemplo desde el directorio /home/linuxconfig/
:
$ mkdir test
$ echo "linuxconfig.org" > orig_file
$ ln -s ../orig_file test/
$ ln -s ../orig_file test/sym_file1
$ ln -s /home/linuxconfig/../../tmp/../home/linuxconfig/orig_file test/sym_file2
$ ln -s ../../../home/linuxconfig/orig_file test/sym_file3
$ tree test/
Como puede ver en el ejemplo anterior, incluso puede combinar rutas relativas y absolutas y, aún así, el enlace simbólico funciona siempre que apunte correctamente al archivo original. Este no es un concepto fácil de entender, pero piense en el primer argumento como una ruta al archivo original desde el directorio de destino. Si se encuentra en el directorio de destino, la ruta proporcionada como primer argumento del comando ln
debe ser correcta desde allí. Para comprender mejor las rutas relativas y absolutas, considere consultar la sección Ruta relativa frente a absoluta como parte de nuestro tutorial de secuencias de comandos bash.
Conclusión
Gestionar correctamente los enlaces simbólicos es esencial para mantener una estructura funcional del sistema de archivos. Al comprender cómo configurar correctamente los objetivos de los enlaces simbólicos, ya sea a través de rutas absolutas o relativas, puede evitar errores relacionados con bucles de resolución infinitos, como "Demasiados niveles de enlaces simbólicos". Asegúrese siempre de que sus enlaces simbólicos apunten a los objetivos correctos y revise los enlaces existentes si encuentra este error.