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_dev
在stat()
结果)。所以如果你没有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)
在这里您可以看到设备的类型和系统上当前挂载的文件系统的类型。第三列显示它们在系统文件系统中的安装位置。
好吧,正如其他人所说,您应该编辑您的问题并明确您要实现的目标。据我了解,您需要检查目录是否已安装到特定设备。您也可以尝试以下操作。
df -P /test | tail -1 | cut -d' ' -f 1
Run Code Online (Sandbox Code Playgroud)
所以基本上,如果设备被挂载到目录,上面的命令会让你知道目录的挂载点。
小智 6
当我想检查安装新的 XFS 文件系统时,我一直在寻找同样的问题。
我找到了命令findmnt:findmnt /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)
你的问题有点令人困惑,但我想,检查这一点的方法之一是:mount |awk '{print $3}'| grep -w <your_directory>
。如果输出为空,则没有设备安装到该目录。如果不为空,则某些设备已安装到该目录。其他方法是使用df <your_directory>
. 如果最后一个字段等于您的目录名称 - 则某些设备已安装到其中。