Ни один из них не удовлетворяет случаю использования, где данный каталог является подкаталогом в другой точке монтирования. Например, у вас может быть / вещь, которая является монтированием NFS к хосту: / real_thing. Использование grep для этой цели в / proc / mounts / etc / mtab или 'mount' не будет работать, потому что вы будете искать точку монтирования, которая не существует. Например, / thing / thingy не является точкой монтирования, но / thing монтируется на хосте: / real_thing. Наилучший ответ, за который проголосовали здесь, на самом деле НЕ "лучший способ определить, смонтирован ли каталог / volumne". Я бы проголосовал за использование «df -P» (режим стандартов -P POSIX) в качестве более чистой стратегии:
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"
}
Результат выполнения этого будет:
Mounted via: host:/real_thing
Если вы хотите знать, какова реальная точка монтирования, не проблема:
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"
}
Результатом этой команды будет:
Mounted on: /thing
Все это очень полезно, если вы пытаетесь создать какой-либо chroot, который отражает точки монтирования вне chroot, внутри chroot, через какой-либо произвольный каталог или список файлов.