Usualmente uso mount
para verificar qué sistemas de archivos están montados. También sé que hay alguna conexión entre mount
y /etc/mtab
pero no estoy seguro de los detalles. Después de leer Cómo verificar si/proc/está montado Me confundo más.
Mi pregunta es: ¿Cómo obtener la lista más precisa de sistemas de archivos montados? ¿Debo usar mount
o leer el contenido de /etc/mtab
, o el contenido de /proc/mounts
? ¿Qué daría el resultado más confiable?
La lista definitiva de sistemas de archivos montados está en /proc/mounts
.
Si tiene alguna forma de contenedores en su sistema, /proc/mounts
Solo enumera los sistemas de archivos que están en su contenedor actual. Por ejemplo, en un chroot , /proc/mounts
Enumera solo los sistemas de archivos cuyo punto de montaje está dentro del chroot. ( Hay formas de escapar del chroot, mente. )
También hay una lista de sistemas de archivos montados en /etc/mtab
. Esta lista es mantenida por los comandos mount
y umount
. Eso significa que si no usa estos comandos (lo cual es bastante raro), su acción (montar o desmontar) no se grabará. En la práctica, es principalmente en un chroot donde encontrarás archivos /etc/mtab
Que difieren enormemente del estado del sistema. Además, los montajes realizados en el chroot se reflejarán en el /etc/mtab
Del chroot pero no en el principal /etc/mtab
. Las acciones realizadas mientras /etc/mtab
Está en un sistema de archivos de solo lectura tampoco se registran allí.
La razón por la que a veces desea consultar /etc/mtab
Con preferencia o además de /proc/mounts
Es que, debido a que tiene acceso a la línea de comando de montaje, a veces puede presentar información de una manera eso es más fácil de entender; por ejemplo, verá las opciones de montaje según lo solicitado (mientras que /proc/mounts
enumera los mount
y los valores predeterminados del núcleo también), y los montajes de enlace aparecen como tales en /etc/mtab
.
A partir del v. 2.18 (julio de 2010)util-linux
incluye una herramienta que le permite mostrar una lista de los sistemas de archivos actualmente montados:
findmnt
Puede cambiar de la vista de árbol predeterminada a la vista de lista con -l
, defina columnas de salida con -o
(similar a lsblk
), filtra los resultados según el tipo de sistema de archivos con -t
etc ...
findmnt -lo source, target, fstype, label, options, used -t ext4
SOURCE TARGET FSTYPE LABEL OPTIONS USED
/dev/sda1 / ext4 Arch rw,noatime,discard,data=ordered 17.6G
/dev/sdb2 /media/DATA ext4 DATA rw,noatime,discard,data=ordered 44M
Para más detalles lea la página man
(y findmnt --help
para obtener la lista de columnas disponibles)
Tal vez porque han pasado 5 años desde que se respondió esta pregunta, las cosas han cambiado. Los cat /proc/mounts
crea mucha información que no te importa. Hoy, en mi humilde opinión, creo que esta es la solución definitiva.
df -h --output=source,target
cuando lees las páginas del manual, hay todo tipo de opciones que puedes hacer, pero esto es lo que tú haces. Por ejemplo, para limpiar aún más los resultados, puede excluir tipos de archivos de "tmpfs" con este comando:
df -hx tmpfs --output=source,target
df
funciona en el nivel del sistema de archivos y no en el nivel del archivo.
Los comandos anteriores también incluirán montajes de red.
Para ver un poco más de información, use esto:
df -hT
NOTA ¡Con conexiones de red de montaje lento, esto puede tomar varios minutos!
Si no tiene o le importan las conexiones de red montadas (y tiene permisos de root), esto es aún mejor:
Sudo lsblk -f
La mayoría de las veces, mount
es el método más conveniente. Para obtener una lista completa y exacta de los sistemas de archivos montados actualmente, debe leer el contenido de /proc/mounts
(por ejemplo, con cat /proc/mounts
).
Por ejemplo, si se monta /
readwrite falló y luego se montó de solo lectura como respaldo, /etc/mtab
(del cual se lee el comando mount
para decirte qué está montado, y escribe, si puede, cuando cambia lo que está montado) no se actualizará para reflejar que /
(que contiene /etc/mtab
) actualmente está montado de solo lectura. En esta situación, ejecutar mount
normalmente le indicaría (incorrectamente) que /
fue montado readwrite.
En condiciones normales (es decir, cuando se puede escribir en el sistema de archivos que lo contiene), /etc/mtab
contiene una lista de los sistemas de archivos actualmente montados. Esto no debe confundirse con /etc/fstab
, que contiene una lista de sistemas de archivos que se supone que se montan automáticamente cuando se inicia el sistema.
Por supuesto, si el /proc
el sistema de archivos virtual no está montado en sí mismo, entonces no puede leer ninguno de los archivos virtuales, lo que incluiría /proc/mounts
. Esto muy raramente es el caso. En esta situación, mount
es probablemente su mejor opción para ver lo que está montado.