如何检查特定目录是否已挂载?

uni*_*ixx 34 mount

如何检查特定目录是否安装在 Linux 机器上。例如有一个名为 test 的文件夹,我想检查它是否已安装。

Sté*_*las 39

如果你想检查它是文件系统的挂载点,这就是mountpoint命令(在大多数基于 Linux 的系统上)的用途:

if mountpoint -q -- "$dir"; then
  printf '%s\n' "$dir is a mount point"
fi
Run Code Online (Sandbox Code Playgroud)

它通过检查是否...具有相同的设备号(st_devstat()结果)。所以如果你没有mountpoint命令,你可以这样做:

perl -le '$dir = shift; exit(1) unless
  (@a = stat "$dir/." and @b = stat "$dir/.." and
  ($a[0] != $b[0] || $a[1] == $b[1]))' "$dir"
Run Code Online (Sandbox Code Playgroud)

Like mountpoint/即使/不是挂载点(例如在chroot监狱中时),或者false对于自身内部同一文件系统的绑定挂载的挂载点,它也会返回true 。

相反mountpoint,对于符号链接,它会检查符号链接的目标是否是挂载点。


slm*_*slm 19

正如 HalosGhost 在评论中提到的,目录本身并不一定被挂载。相反,它们存在于已安装的设备上。要检查这一点,您可以使用如下df命令:

$ df -h /boot/
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda1              99M   55M   40M  59% /boot
Run Code Online (Sandbox Code Playgroud)

在这里我们可以看到该目录/boot是文件系统的一部分,/dev/hda1. 这是一个物理设备,在系统上是一个 HDD。

您还可以通过使用mount命令查询系统以查看当前安装了哪些设备来对此有所不同:

$ mount | column -t
/dev/mapper/VolGroup00-LogVol00  on  /                         type  ext3         (rw)
proc                             on  /proc                     type  proc         (rw)
sysfs                            on  /sys                      type  sysfs        (rw)
devpts                           on  /dev/pts                  type  devpts       (rw,gid=5,mode=620)
/dev/hda1                        on  /boot                     type  ext3         (rw)
tmpfs                            on  /dev/shm                  type  tmpfs        (rw)
/dev/mapper/lvm--raid-lvm0       on  /export/raid1             type  ext3         (rw)
none                             on  /proc/sys/fs/binfmt_misc  type  binfmt_misc  (rw)
sunrpc                           on  /var/lib/nfs/rpc_pipefs   type  rpc_pipefs   (rw)
nfsd                             on  /proc/fs/nfsd             type  nfsd         (rw)
Run Code Online (Sandbox Code Playgroud)

在这里您可以看到设备的类型和系统上当前挂载的文件系统的类型。第三列显示它们在系统文件系统中的安装位置。

  • 要检查 _particular_ 目录是否是活动的挂载点(特别是在脚本中,二进制结果很方便),`mountpoint` 命令是一个不错的选择,例如 `if mountpoint -q /path/to/dir; 然后……`。不过,我不确定它的可用范围有多广。 (2认同)

Ram*_*esh 7

好吧,正如其他人所说,您应该编辑您的问题并明确您要实现的目标。据我了解,您需要检查目录是否已安装到特定设备。您也可以尝试以下操作。

df -P /test | tail -1 | cut -d' ' -f 1
Run Code Online (Sandbox Code Playgroud)

所以基本上,如果设备被挂载到目录,上面的命令会让你知道目录的挂载点。


小智 6

当我想检查安装新的 XFS 文件系统时,我一直在寻找同样的问题。

我找到了命令findmntfindmnt /directoryname

[root@CentOS7-Server /]# findmnt /mnt
TARGET SOURCE    FSTYPE OPTIONS
/mnt   /dev/sdb1 xfs    rw,relatime,seclabel,attr2,inode64,noquota
[root@CentOS7-Server /]# 
Run Code Online (Sandbox Code Playgroud)


gen*_*a2x 0

你的问题有点令人困惑,但我想,检查这一点的方法之一是:mount |awk '{print $3}'| grep -w <your_directory>。如果输出为空,则没有设备安装到该目录。如果不为空,则某些设备已安装到该目录。其他方法是使用df <your_directory>. 如果最后一个字段等于您的目录名称 - 则某些设备已安装到其中。