シェルスクリプトで特定のフォルダがマウントされたリモート(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
関連ディレクトリを参照する行を見つけるにはgrep
、sed
またはを使用します。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
オプションは標準ではない。