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


151

Usualmente uso mountpara verificar qué sistemas de archivos están montados. También sé que hay alguna conexión entre mounty, /etc/mtabpero 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 mounto leer el contenido /etc/mtabo el contenido de /proc/mounts? ¿Qué daría el resultado más confiable?


3
También debe leer la respuesta aceptada a esta pregunta: unix.stackexchange.com/questions/12040/…
nozimica

No puedo evitar vincularme a ¿Qué es / etc / mtab en Linux? porque cubre detalles que no son de Linux que ninguna de las respuestas da aquí.
Weijun Zhou

Respuestas:


141

La lista definitiva de sistemas de archivos montados está en /proc/mounts.

Si tiene alguna forma de contenedores en su sistema, /proc/mountssolo enumere los sistemas de archivos que están en su contenedor actual. Por ejemplo, en un chroot , /proc/mountsenumera 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 mounty 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 /etc/mtabarchivos que difieren enormemente del estado del sistema. Además, los montajes realizados en el chroot se reflejarán en el chroot /etc/mtabpero no en el principal /etc/mtab. Las acciones realizadas mientras /etc/mtabestá en un sistema de archivos de solo lectura tampoco se registran allí.

La razón por la que a veces querría consultar /etc/mtabcon preferencia o además /proc/mountses porque tiene acceso a la línea de comando de montaje, a veces puede presentar información de una manera más fácil de entender; por ejemplo, verá las opciones de montaje según lo solicitado (mientras que también /proc/mountsenumera los mountvalores predeterminados y del núcleo), y los montajes de enlace aparecen como tales en /etc/mtab.


1
¿Cuál es el punto de mountmantener /etc/mtabsi no se puede confiar en él? ¿No sería mejor si se mountpresentara información de él /proc/mounts?
Piotr Dobrogost

2
@PiotrDobrogost /etc/mtabpuede registrar información que el núcleo no rastrea, como las opciones solicitadas originalmente, y los montajes de enlace que aparecen como tales en lugar de aparecer como entradas duplicadas para dispositivos. Sin embargo, muchas distribuciones se están moviendo hacia hacer /etc/mtabun enlace simbólico a /proc/mounts.
Gilles

3
Sin embargo, muchas distribuciones se están moviendo hacia hacer /etc/mtabun enlace simbólico a /proc/mounts. Es bueno escucharlo: agregar esta información para responder lo haría aún mejor. ¿Crees que el seguimiento de las opciones solicitadas por el núcleo sería factible y beneficioso?
Piotr Dobrogost

2
Tenga en cuenta que tendrá que deshacerse del contenido de / proc / mounts. Como se describe en la página getmntent (3), el espacio (\ 040), la pestaña (\ 011), la nueva línea (\ 012) y la barra invertida (\ 134) deben manejarse especialmente. Especialmente si los montajes de usuario están habilitados, deberá tener mucho cuidado al trabajar con estas rutas.
Eric

2
Consulte también otra respuesta para usar el comando, findmntque es la forma preferida desde 2010 y probablemente la única forma segura en un futuro próximo cuando los espacios de nombres de montaje sean comunes.
Marki555

69

A partir de la versión 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, definir columnas de salida con -o(similar a lsblk), filtrar los resultados según el tipo de sistema de archivos con -tetc.

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 manpágina (y findmnt --helppara obtener la lista de columnas disponibles)


33

Tal vez porque han pasado 5 años desde que se respondió esta pregunta, las cosas han cambiado. El cat /proc/mountscrea una gran cantidad de 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 llevar 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

No es necesario que sea root, pero algunos de los campos / columnas (como Label) tendrán datos nulos, lo que podría estar bien ya que las preguntas quieren saber qué sistemas de archivos están montados.
Rick

Ubuntu Sin embargo, acabo de descubrir "findmnt" que no usa root y enumera los sistemas de archivos montados en red. Estaba pensando en editar mi respuesta para incluir ese conocimiento.
Rick

:-) Me cansé de dar tu respuesta a un voto, pero no puedo hasta que tenga un representante de 15+
Rick

1
Por cierto, si estás tratando de usar --outputalgo como Ubuntu 12 que no acepta esas opciones, mira la findmntrespuesta de don_crissti a continuación, que sí lo hace.
Mat Schaffer

findmntparece necesitar capacidades superiores (probadas con root; root tiene todas las capacidades) para mostrar etiquetas.
ctrl-alt-delor

23

La mayoría de las veces, mountes el método más conveniente. Para obtener una lista completa y exacta de los sistemas de archivos actualmente montados, debe leer el contenido de /proc/mounts(por ejemplo, con cat /proc/mounts).

Por ejemplo, si /fallaba el montaje de lectura y escritura y luego se montaba solo como respaldo, /etc/mtab(el mountcomando lee para decirle qué está montado y escribe, si puede, cuando cambia lo que está montado) no se actualizará para reflejar que /(que contiene /etc/mtab) está actualmente montado solo lectura. En esta situación, la ejecución mountnormalmente le /indicaría (incorrectamente) que se montó readwrite.

En condiciones normales (es decir, cuando se puede escribir en el sistema de archivos que lo contiene), /etc/mtabcontiene 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 /procsistema de archivos virtual no está montado, entonces no puede leer ninguno de los archivos virtuales en él, lo que incluiría /proc/mounts. Esto muy raramente es el caso. En esta situación, mountes probablemente su mejor opción para ver lo que está montado.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.