GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリがbashでマウントされているかどうかを確認します

わざわざ O/S について言及しませんでした。

Ubuntu Linux 11.10 (およびおそらく最新の Linux フレーバー) には mountpoint があります コマンド。

これは私のサーバーの 1 つでの例です:

$ mountpoint /oracle
/oracle is a mountpoint
$ mountpoint /bin
/bin is not a mountpoint

実際、あなたの場合、 -q を使用できるはずです オプション、次のように:

mountpoint -q /foo/bar || mount -o bind /some/directory/here /foo/bar

お役に立てば幸いです。


mountpoint のマニュアル

<ブロック引用>

指定されたディレクトリまたはファイルが /proc/self/mountinfo ファイルに記載されているかどうかを確認します。

mount のマニュアル 言います:

<ブロック引用>

リスティング モードは、下位互換性のためにのみ維持されています。より堅牢でカスタマイズ可能な出力を得るには、特にスクリプトで findmnt(8) を使用してください。

したがって、使用する正しいコマンドは findmnt です 、それ自体が util-linux の一部です パッケージと、マニュアルによると:

<ブロック引用>

/etc/fstab、/etc/mtab、または /proc/self/mountinfo で検索できます

したがって、実際には mountpoint よりも多くのものを検索します .また、便利なオプションも提供します:

<ブロック引用>

-M, --mountpoint パス

マウントポイント ファイルまたはディレクトリを明示的に定義します。 --target も参照してください。

要約すると、ディレクトリが bash でマウントされているかどうかを確認するには、次を使用できます。

if [[ $(findmnt -M "$FOLDER") ]]; then
    echo "Mounted"
else
    echo "Not mounted"
fi

例:

mkdir -p /tmp/foo/{a,b}
cd /tmp/foo

sudo mount -o bind a b
touch a/file
ls b/ # should show file
rm -f b/file
ls a/ # should show nothing

[[ $(findmnt -M b) ]] && echo "Mounted"
sudo umount b
[[ $(findmnt -M b) ]] || echo "Unmounted"

私の解決策:

is_mount() {
    path=$(readlink -f $1)
    grep -q "$path" /proc/mounts
}

例:

is_mount /path/to/var/run/mydir/ || mount --bind /var/run/mydir/ /path/to/var/run/mydir/

Mark J. Bobak の回答については、mountpoint bind でマウントすると動作しません 別のファイルシステムのオプション。

Christopher Neylan の回答では、grep の出力を /dev/null にリダイレクトする必要はなく、grep -q を使用するだけです

最も重要なのは、readlink -f $mypath を使用してパスを正規化することです :

  • /path/to/dir/ などのパスを確認すると バックスラッシュで終わり、/proc/mounts のパス または mount 出力は /path/to/dir です
  • ほとんどの Linux リリースでは、/var/run/ /run/ のシンボリックリンクです 、したがって、バインドを /var/run/mypath にマウントすると マウントされているかどうかを確認すると、 /run/mypath と表示されます /proc/mounts で .

mount の実行 引数なしのコマンドは、現在のマウントを教えてくれます。シェル スクリプトから、grep でマウント ポイントを確認できます。 および if ステートメント:

if mount | grep /mnt/md0 > /dev/null; then
    echo "yay"
else
    echo "nay"
fi

私の例では、if ステートメントは grep の終了コードをチェックしています。 、一致したかどうかを示します。一致したときに出力を表示したくないので、 /dev/null にリダイレクトしています .


Linux
  1. 時間コマンドでBashスクリプトの実行にかかる時間を確認する

  2. bash の変数を持つエイリアス

  3. Bash:タイムアウトで待機

  1. ディレクトリに入るときにBashスクリプトを実行しますか?

  2. Git for Windows で Git Bash のディレクトリを変更するにはどうすればよいですか?

  3. ファイルがbashスクリプトの特定のディレクトリに存在するかどうかを確認するには?

  1. 特定のディレクトリがマウントされているかどうかを確認する方法は??

  2. Bash -cと位置パラメータ?

  3. ディレクトリ付きの猫ファイル?