用于了解文件系统是否已安装的Shell脚本

时间:2010-11-18 07:25:43

标签: shell filesystems mount

我在特定目录上安装了tmpfs文件系统。我想编写一个shell脚本来检查tmpfs文件系统是否已经挂载在目录中。

8 个答案:

答案 0 :(得分:40)

有一个专门针对此的工具:mountpoint(1)

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

你甚至不需要刮掉它就行了!

请注意,我在Debian的initscripts包中找到了这个工具。它在其他地方的可用性不是我可以评论的东西。

答案 1 :(得分:4)

您可以检查文件系统的类型。

$ 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

答案 2 :(得分:2)

像这样的东西,虽然是hackish,但应该做到这一点:

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

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

答案 3 :(得分:2)

我知道这个线程是旧的,但为什么不使用df和grep作为mountpoint所需的路径?就像这样:

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

如果挂载则grep返回true,否则返回false。所以我们只需要像这样测试它:

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

容易腻......

答案 4 :(得分:1)

您可以使用df,尝试man df

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

会给你一样的话:

Filesystem Mounted
/dev/sda5  'some_dir'

然后你可以添加一个检查目录'some_dir'是否与'your_dir'相同,而filesystem与你的相同。

答案 5 :(得分:0)

检查/处理/安装。如果你grep文件系统名称和你希望它挂载的路径(甚至可能包含所有选项的特定行),你可以判断文件系统是否已挂载。

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

答案 6 :(得分:0)

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

答案 7 :(得分:-2)

mountpoint更加优雅,并且在sysvinit-tools CentOS 6 +++