estoy usando
mount -o bind /some/directory/here /foo/bar
Quiero comprobarlo /foo/barcon un script bash y ver si se ha montado. Si no es así, llame al comando de montaje anterior, de lo contrario, haga otra cosa. ¿Cómo puedo hacer esto?
CentOS es el sistema operativo.

Respuestas:
Ejecutar el
mountcomando sin argumentos le dirá los montajes actuales. Desde un script de shell, puede verificar el punto de montaje congrepuna instrucción if:En mi ejemplo, la sentencia if está verificando el código de salida de
grep, que indica si hubo una coincidencia. Como no quiero que se muestre la salida cuando hay una coincidencia, la estoy redirigiendo a/dev/null.fuente
grepdevuelve un estado de salida distinto de cero si no hay coincidencias. No es necesario realizar la prueba o la subcapa creada por $ ().if command | grep -q 'stuff'; then ...mount | grep ...mostrarte que tu enlace de montura todavía está activo. Si el dispositivo subyacente se desmonta y se vuelve a montar, el enlace de montaje ya no conectará los dos archivos / directorios aunquemounttodavía muestre que está conectado. Y si lo hacesumount ...incluso te dirá que no está montado, aunquemountdijo que sí. ENORME falla en el sistema de archivos de Linux.readlink -f, que no devuelve nada cuando la ruta / archivo no existe. Si el / mount / path / to_file subyacente no está allí (por vínculo de lectura), el montaje subyacente está roto (vuelva a montar el montaje subyacente y el enlace). Si el archivo subyacente está allí yreadlink -fdice que la versión de enlace de ese archivo no está allí, el enlace está roto, simplemente vuelva a montar el enlace./mnt/md0xxxel comando indicará/mnt/md0como montado, mientras que lo que no tiene que ser ...No te molestaste en mencionar un O / S.
Ubuntu Linux 11.10 (y probablemente las versiones más actualizadas de Linux) tienen el
mountpointcomando.Aquí hay un ejemplo en uno de mis servidores:
En realidad, en su caso, debería poder usar la
-qopción, así:Espero que ayude.
fuente
El manual de
mountpointdice que:El manual de
mountdice que:Entonces, el comando correcto a usar es
findmnt, que es en sí mismo parte delutil-linuxpaquete y, de acuerdo con el manual:Entonces, en realidad, busca más cosas que
mountpoint. También proporciona la opción conveniente:En resumen, para verificar si un directorio está montado con bash, puede usar:
Ejemplo:
fuente
Me gustan las respuestas que usan
/proc/mounts, pero no me gusta hacer un simple grep. Eso puede darte falsos positivos. Lo que realmente desea saber es "si alguna de las filas tiene esta cadena exacta para el campo número 2". Entonces, haz esa pregunta. (en este caso estoy comprobando/opt)fuente
mountpointofindmntexistir. Respuesta muy simple, mucha alegría, tal UNIX :)Mi solución:
Ejemplo:
Para la respuesta de Mark J. Bobak ,
mountpointno funciona si se monta con labindopción en un sistema de archivos diferente.Para la respuesta de Christopher Neylan , no es necesario redirigir la salida de grep a / dev / null, solo use
grep -qen su lugar.Lo más importante, canonicaliza la ruta usando
readlink -f $mypath:/path/to/dir/final con barra invertida, la ruta de entrada/proc/mountsomountsalida es/path/to/dir/var/run/es el enlace simbólico de/run/, por lo que si monta bind/var/run/mypathy comprueba si se montó, se mostrará como/run/mypathen/proc/mounts.fuente
Otra solución limpia es así:
Por supuesto, 'echo algo' puede ser sustituido por lo que necesite hacer para cada caso.
fuente
Las respuestas aquí son demasiado complicadas, solo verifique si la montura existe usando:
cat /proc/mounts | tail -n 1Esto solo genera la última carpeta montada, si desea verlos todos, simplemente elimine el comando tail.
fuente
En mi .bashrc, hice el siguiente alias:
fuente