Mucha gente sigue diciendo que Linux no guarda información sobre los montajes de enlace, por lo que no hay forma de obtener una lista de ellos y sus fuentes. Aquí hay unos ejemplos:
de uno de los comentarios aquí :
IIRC esta información no se guarda en ningún lado: después
mount --bind
, las dos copias son equivalentes, no hay una que sea más "original" que la otra. Después de todo, no podría haber original si ya hubiera desmontado/mnt
.de una respuesta en este sitio :
Entonces, la única forma de recordar qué monturas eran monturas de unión es el registro de los comandos de montura que quedan
/etc/mtab
. Una operación de montaje de enlace se indica mediante la opción de montaje de enlace (que hace que se ignore el tipo de sistema de archivos). Pero mount no tiene la opción de enumerar solo los sistemas de archivos montados con un conjunto particular de conjuntos de opciones.de un informe de error de Debian :
Esto es intencional Ambos puntos de montaje son totalmente iguales en todos los sentidos, por lo que el núcleo no mantiene ningún indicador para diferenciarlos.
Sin embargo, lo anterior no tiene sentido. La herramienta findmnt
puede enumerar las rutas de origen de los montajes de enlace (en forma de device[source-path]
; También estoy tratando de hacer que solo enumere la ruta de origen y no el dispositivo). Si el kernel de Linux va a mantener un montaje de enlace, entonces esa información tiene que almacenarse en algún lugar , de lo contrario no podría saber que /home
está vinculada /users
. Entonces, ¿dónde están estos datos? ¿Está almacenado en alguna región oscura en la RAM? ¿ findmnt
Mira en /proc
algún lado?
/proc/self/mountinfo
relativamente recientemente fue reestructurado. Estaba en mi máquina RHEL6 antes, que no tenía la información de la ruta, pero mi máquina RHEL7 sí y, como se menciona en su enlace, Wheezy también.
/dev/A
se monta en /B
y lo hace mount --bind /B /C
, los núcleos más antiguos solo recuerdan /B → /dev/A
y /C → /dev/A
, no recuerdan ninguna relación entre /B
y /C
. Por lo tanto, desmontar /B
naturalmente no tiene ningún efecto /C
. Los núcleos más nuevos recuerdan que /C
fue un montaje de enlace /B
, pero de una manera que no impide /C
continuar trabajando si no /B
está montado, no sé exactamente cómo.
findmnt
está ejecutando y qué opciones le está dando? El mío no lo imprime así y mirando el código fuente que parece estar usando,_PATH_PROC_MOUNTINFO
que parece/proc/self/mountinfo
no tener esta información tampoco.