Nenhuma delas satisfaz o caso de uso em que um determinado diretório é um subdiretório dentro de outro ponto de montagem. Por exemplo, você pode ter / coisa que é uma montagem NFS para hospedar: / real_thing. Usar grep para esse fim em / proc / mounts / etc / mtab ou 'mount' não funcionará, porque você estará procurando um ponto de montagem que não existe. Por exemplo, / thing / thingy não é um ponto de montagem, mas / thing está montado no host: / real_thing. A melhor resposta votada aqui NÃO é "a melhor maneira de determinar se um diretório / volume está montado". Eu votaria a favor usando 'df -P' (modo de padrões -P POSIX) como uma estratégia mais limpa:
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"
}
A saída da execução disso será:
Mounted via: host:/real_thing
Se você deseja saber qual é o verdadeiro ponto de montagem, não há 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"
}
A saída desse comando será:
Mounted on: /thing
Tudo isso é muito útil se você estiver tentando criar algum tipo de chroot que espelhe pontos de montagem fora do chroot, dentro do chroot, por meio de um diretório ou lista de arquivos arbitrários.