Digamos que acabo de crear el directorio newDirectory y luego hago el comando ls -ld. Veo que el número de enlaces duros es 2. ¿Qué hace exactamente que el enlace duro sea 2 desde el principio? ¿También es el número de subdirectorios en el directorio actual igual al número de enlaces duros - 2?
Respuesta aceptada:
Históricamente, el primer sistema de archivos Unix creaba dos entradas en cada directorio:.
apuntando al directorio mismo, y ..
apuntando a su padre. Esto proporcionó una manera fácil de atravesar el sistema de archivos, tanto para las aplicaciones como para el propio sistema operativo.
Por lo tanto, cada directorio tiene un recuento de enlaces de 2+n, donde n es el número de subdirectorios. Los enlaces son la entrada para ese directorio en su padre, el propio .
del directorio entrada, y el ..
entrada en cada subdirectorio. Por ejemplo, suponga que este es el contenido del subárbol enraizado en /parent
, todos los directorios:
/parent
/parent/dir
/parent/dir/sub1
/parent/dir/sub2
/parent/dir/sub3
Luego dir
tiene un recuento de enlaces de 5:el dir
entrada en /parent
, el .
entrada en /parent/dir
, y los tres ..
entradas en cada uno de /parent/dir/sub1
, /parent/dir/sub2
y /parent/dir/sub3
. Desde /parent/dir/sub1
no tiene subdirectorio, su recuento de enlaces es 2 (el sub1
entrada en /parent/dir
y el .
entrada en /parent/dir/sub1
).
Para minimizar la cantidad de mayúsculas y minúsculas para el directorio raíz, que no tiene un padre "adecuado", el directorio raíz contiene un ..
entrada apuntando a sí mismo. De esta forma, también tiene un recuento de enlaces de 2 más el número de subdirectorios, siendo los 2 /.
y /..
.
Los sistemas de archivos posteriores tienden a realizar un seguimiento de los directorios principales en la memoria y, por lo general, no necesitan .
y ..
existir como entradas reales; los típicos sistemas Unix modernos tratan .
y ..
como valores especiales como parte del código del sistema de archivos independiente del tipo de sistema de archivos. Algunos sistemas de archivos todavía incluyen .
y ..
entradas, o pretender aunque no aparezca nada en el disco.
La mayoría de los sistemas de archivos aún informan un recuento de enlaces de 2+n para directorios independientemente de si .
y ..
existen entradas, pero hay excepciones, por ejemplo, btrfs no hace esto.