it-swarm-es.tech

¿Cómo obtener la lista completa y exacta de los sistemas de archivos montados en Linux?

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?

168
xanpeng

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)

81
don_crissti

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
37
Rick

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.

23
Eliah Kagan