20

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

4

8 回答 8

53

有一个专门用于此的工具:mountpoint(1)

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

而且您甚至不必刮弦就可以做到!

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

于 2010-11-18T19:11:52.013 回答
5

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

$ 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
于 2010-11-19T02:46:36.977 回答
4

像这样的东西,虽然 hackish,但应该可以解决问题:

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
于 2010-11-18T07:34:21.807 回答
2

我知道这个线程很旧,但为什么不直接使用 df 和 grep 作为挂载点所需的路径呢?即像这样:

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

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

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

十分简单...

于 2013-07-21T16:20:58.653 回答
1

你可以用df,试试man df

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

会给你这样的:

Filesystem Mounted
/dev/sda5  'some_dir'

然后,您可以添加检查目录“some_dir”是否与“your_dir”相同,文件系统是否与您的相同。

于 2010-11-18T07:33:23.870 回答
0

检查 /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
于 2010-11-18T07:34:47.470 回答
0
if mount -l -t tmpfs | grep "on $directory "
then
    echo "it's mounted"
fi
于 2010-11-18T21:15:39.760 回答
-3

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

于 2016-07-26T16:54:26.513 回答