web-dev-qa-db-ja.com

ファイルシステムがすでにマウントされているかどうかを知るためのシェルスクリプト

特定のディレクトリにtmpfsファイルシステムをマウントしています。 tmpfsファイルシステムがすでにディレクトリにマウントされているかどうかを確認するシェルスクリプトを作成したいと思います。

17
nitin_cherian

ファイルシステムの種類を確認できます。

 $ stat -f -c '%T' /
xfs
$ stat -f -c '%T' /dev/shm
tmpfs

また、そのデバイスをその親のデバイスと比較することにより、ディレクトリがマウントポイントであるかどうかを確認することもできます。

 $ stat -c '%D' /
901
$ stat -c '%D' /home
fe01
$ stat -c '%D' /home/$USER
fe01
5
ephemient

これに特化したツールがあります:mountpoint(1)

if mountpoint -q "$directory" ; then
    echo it is a mounted mountpoint
else
    echo it is not a mounted mountpoint
fi

そして、あなたはそれをするためにひもをこする必要さえありません!

このツールはDebianのinitscriptsパッケージに含まれていることに注意してください。それが他の場所でどれほど利用可能であるかは、私がコメントできるものではありません。

43
sorpigal

このようなものは、ハック的ですが、トリックを行う必要があります:

FS_TO_CHECK="/dev" # For example... change this to suit your needs.

if grep -F " $FS_TO_CHECK " /proc/mounts > /dev/null; then
    # Filesystem is mounted
else
    # Filesystem is not mounted
fi
4
cdhowie

このスレッドが古いことは知っていますが、マウントポイントへの必要なパスにdfとgrepを使用しないのはなぜですか?つまり、このように:

df /full/path | grep -q /full/path

grepは、マウントされている場合はtrueを返し、マウントされていない場合はfalseを返します。したがって、次のようにテストする必要があります。

df /mnt/myUSBdisk | grep -q /mnt/myUSBdisk && echo "Mounted" || echo "Not mounted"

簡単ピーシー...

2
Scooby-2

dfを使用できます。man dfを試してください。

df 'directory' | awk '{print $1, $6}'

次のようなsthを提供します:

Filesystem Mounted
/dev/sda5  'some_dir'

次に、ディレクトリ「some_dir」が「your_dir」と同じであり、ファイルシステムがあなたのものと同じであるかどうかのチェックを追加できます。

1
sud03r
if mount -l -t tmpfs | grep "on $directory "
then
    echo "it's mounted"
fi

/ proc/mountsを確認してください。ファイルシステム名とマウントするパス(すべてのオプションが含まれている特定の行でも)をgrepすると、ファイルシステムがマウントされているかどうかがわかります。

if [ "`grep "tmpfs /lib/init/rw tmpfs rw,nosuid,mode=755 0 0" /proc/mounts`" != "" ]
then
  echo Mounted.
else
  echo Not mounted.
fi
0