フォルダがマウントされたリモートファイルシステムであることを確認してください。

フォルダがマウントされたリモートファイルシステムであることを確認してください。

シェルスクリプトで特定のフォルダがマウントされたリモート(nfs)ファイルシステムにあることを確認するための最良の方法(信頼性、移植性など)は何ですか?

次のコマンドを探しています。

chk-remote-mountpoint /my/path/to/folder 

答え1

〜のようにスティーブン「この問題に対する普遍的なUnixの答えはありません」と言います。

私の問題について私が見つけた最高の解決策は次のとおりです。

df -P -T /my/path/to/folder | tail -n +2 | awk '{print $2}'

ファイルシステムの種類を返します(たとえば、nfsまたは)ext3

-Tオプションいいえ基準したがって、他のUnix / Linuxシステムでは機能しない可能性があります。

~によるとザイルズ'以下の説明:「これは組み込みのLinuxでは動作しませんが、BusyBox、* BSDなどでは動作しません。」

答え2

GNUを使用できますstat

%mマウントポイントを探します。

$ stat --format=%m /usr/src/linux
/usr/src

%T(ファイルシステムモード)ファイルシステムの名前を調べます。

$ stat --file-system --format=%T /usr/src/linux
reiserfs

私のシステムでは、は/usr/src/linuxマウントされたファイルシステムに格納されており、/usr/srcファイルシステムの種類はreiserfs

man stat詳しくはこちらをご覧ください。これはgrep | awk、ファイルに関する情報が必要で再管理されたくない場合にほとんど常に便利な非常に一般的なコマンドです。

答え3

mount -l関連ディレクトリを参照する行を見つけるにはgrepsedまたはを使用します。awk

答え4

df(1) の "-l" はローカルではないファイルシステムでエラーが原因で失敗するため、この動作を使用してファイルシステムがリモートであることを確認できます。

df -l /path 2> /dev/null | grep -q "File"
rc=$?
if [ "$rc" = "0" ]
then
   echo "local mount, do stuff"
fi

しかし、-lオプションは標準ではない

関連情報