Ninguno de estos satisface el caso de uso donde un directorio dado es un subdirectorio dentro de otro punto de montaje. Por ejemplo, puede tener / thing, que es un montaje NFS para alojar: / real_thing. Usar grep para este propósito en / proc / mounts / etc / mtab o 'mount' no funcionará, porque buscará un punto de montaje que no exista. Por ejemplo, / thing / thingy no es un punto de montaje, pero / thing está montado en el host: / real_thing. La mejor respuesta votada aquí en realidad NO es "la mejor manera de determinar si un directorio / volumen está montado". Votaría a favor usando 'df -P' (modo de estándares -P POSIX) como una estrategia más limpia:
dev=`df -P /thing/thingy | awk 'BEGIN {e=1} $NF ~ /^\/.+/ { e=0 ; print $1 ; exit } END { exit e }'` && {
echo "Mounted via: $dev"
} || {
echo "Not mounted"
}
El resultado de ejecutar esto será:
Mounted via: host:/real_thing
Si quieres saber cuál es el punto de montaje real, no hay problema:
mp=`df -P /thing/thingy | awk 'BEGIN {e=1} $NF ~ /^\/.+/ { e=0 ; print $NF ; exit } END { exit e }'` && {
echo "Mounted on: $mp"
} || {
echo "Not mounted"
}
El resultado de ese comando será:
Mounted on: /thing
Todo esto es muy útil si está intentando crear algún tipo de chroot que refleje los puntos de montaje fuera del chroot, dentro del chroot, a través de un directorio arbitrario o una lista de archivos.