特定のディレクトリにtmpfsファイルシステムをマウントしています。tmpfsファイルシステムがすでにディレクトリにマウントされているかどうかを確認するシェルスクリプトを作成したいと思います。
8 に答える
これ専用のツールがあります: mountpoint(1)
if mountpoint -q "$directory" ; then
echo it is a mounted mountpoint
else
echo it is not a mounted mountpoint
fi
そして、それを行うために弦をこする必要さえありません!
このツールは Debian の initscripts パッケージに含まれていることに注意してください。他の場所でどの程度利用できるかは、私がコメントできるものではありません.
ファイルシステムのタイプを確認できます。
$ stat -f -c '%T' / xfs $ stat -f -c '%T' /dev/shm tmpfs
ディレクトリのデバイスを親のデバイスと比較して、ディレクトリがマウントポイントであるかどうかを確認することもできます。
$ stat -c '%D' / 901 $ stat -c '%D' /ホーム fe01 $ stat -c '%D' /home/$USER fe01
このようなものは、ハック的ですが、トリックを行う必要があります:
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
このスレッドが古いことは知っていますが、マウントポイントへの必要なパスに df と grep を使用しないのはなぜですか? つまり、このように:
df /full/path | grep -q /full/path
grep は、マウントされている場合は true を返し、マウントされていない場合は false を返します。したがって、次のようにテストする必要があります。
df /mnt/myUSBdisk | grep -q /mnt/myUSBdisk && echo "Mounted" || echo "Not mounted"
簡単にピージー...
使用できますdf
、試してみてくださいman df
。
df 'directory' | awk '{print $1, $6}'
あなたに次のようなsthを与えるでしょう:
Filesystem Mounted
/dev/sda5 'some_dir'
次に、ディレクトリ'some_dir'が'your_dir'と同じであり、ファイルシステムがyoursと同じであるかどうかのチェックを追加できます。
/ 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
if mount -l -t tmpfs | grep "on $directory "
then
echo "it's mounted"
fi
マウントポイントははるかにエレガントで、sysvinit-tools CentOS 6+++ にあります。