estoy usando
mount -o bind /some/directory/here /foo/bar
Quiero comprobarlo /foo/bar
con 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
mount
comando sin argumentos le dirá los montajes actuales. Desde un script de shell, puede verificar el punto de montaje congrep
una 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
grep
devuelve 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 aunquemount
todavía muestre que está conectado. Y si lo hacesumount ...
incluso te dirá que no está montado, aunquemount
dijo 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 -f
dice que la versión de enlace de ese archivo no está allí, el enlace está roto, simplemente vuelva a montar el enlace./mnt/md0xxx
el comando indicará/mnt/md0
como 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
mountpoint
comando.Aquí hay un ejemplo en uno de mis servidores:
En realidad, en su caso, debería poder usar la
-q
opción, así:Espero que ayude.
fuente
El manual de
mountpoint
dice que:El manual de
mount
dice que:Entonces, el comando correcto a usar es
findmnt
, que es en sí mismo parte delutil-linux
paquete 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
mountpoint
ofindmnt
existir. Respuesta muy simple, mucha alegría, tal UNIX :)Mi solución:
Ejemplo:
Para la respuesta de Mark J. Bobak ,
mountpoint
no funciona si se monta con labind
opció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 -q
en 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/mounts
omount
salida es/path/to/dir
/var/run/
es el enlace simbólico de/run/
, por lo que si monta bind/var/run/mypath
y comprueba si se montó, se mostrará como/run/mypath
en/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 1
Esto solo genera la última carpeta montada, si desea verlos todos, simplemente elimine el comando tail.
fuente
En mi .bashrc, hice el siguiente alias:
fuente