假设你想要测试/ mnt/disk是否是shell脚本中的挂载点.你怎么做到这一点?
我发现在我的Fedora 7上有一个mountpoint命令.
从man mountpoint:
NAME mountpoint - see if a directory is a mountpoint SYNOPSIS /bin/mountpoint [-q] [-d] /path/to/directory /bin/mountpoint -x /dev/device
显然它带有sysvinit包,我不知道这个命令是否可用于其他系统.
[root@myhost~]# rpm -qf $(which mountpoint) sysvinit-2.86-17
不依靠mount
,/etc/mtab
,/proc/mounts
,等:
if [ `stat -c%d "$dir"` != `stat -c%d "$dir/.."` ]; then echo "$dir is mounted" else echo "$dir is not mounted" fi
何时$dir
是挂载点,它的设备编号与其父目录不同.
到目前为止列出的替代方案的好处是你不必解析任何东西,并且它做正确的事情dir=/some//path/../with///extra/components
.
缺点是它没有标记/
为挂载点.嗯,这对于特殊情况来说很容易,但仍然如此.
使用GNU find
find-maxdepth 0 -printf "%D"
将给出目录的设备号。如果目录和它的父目录之间不同,则您有一个安装点。
加/。如果您希望链接到不同文件系统的符号链接计入挂载点(您始终希望将其用作父目录),则将其添加到目录名上。
缺点:使用GNU find的便携性较差
优点:报告未记录在/ etc / mtab中的安装点。