Как определить, находится ли заданный каталог на компьютере с Linux на смонтированном диске NFS или нет?
решение1
Вы можете использовать df -t nfs <directory>
, что даст вывод вроде
$ df /home/aland/ -t nfs
Filesystem 1K-blocks Used Available Use% Mounted on
nfs_oscar:/home 1255425376 874128064 316496736 74% /home
если каталог принадлежит монтированию NFS, и ничего в противном случае:
$ df /root/ -t nfs
Filesystem 1K-blocks Used Available Use% Mounted on
Редактировать: более простой способ: df -T <directory>
(флаг -P
используется для отключения красивого форматирования для облегчения tail
ing и awk
ing):
$ df /home/aland/ -TP | tail -n -1 | awk '{print $2}'
nfs
решение2
Вы можете использовать эту stat
утилиту, чтобы -f
указать, что вы ищете информацию о файловой системе.
Например:
$ stat -f -c %T .
ext2/ext3
$ stat -f -c %T /sys
sysfs
$ stat -f -c %T /proc
proc
$ if [[ $(stat -f -c %T /proc) == proc ]] ; then echo Good ; fi
Good
(См. страницу руководства для ознакомления с различными вариантами форматирования. Извините, у меня нет под рукой монтирования NFS.)
решение3
Я бы просто использовал инструмент по умолчанию mountpoint
:
NAME
mountpoint - see if a directory is a mountpoint
SYNOPSIS
mountpoint [-d|-q] directory
Поскольку вы говорите конкретно о NFS
, это означает, что у вас также есть доступ к showmount
, за исключением того, что эта работа выполняется наоборот (с хоста вместо каталога):
NAME
showmount - show mount information for an NFS server
SYNOPSIS
showmount [ -adehv ] [ --all ] [ --directories ] [ --exports ] [ --help ] [ --version ] [ host ]