如何找出某个子目录挂载在哪里?

如何找出某个子目录挂载在哪里?

假设/var/log/dev/sda2,并且/var/spool是 的一部分是的/var一部分。//dev/sda1

现在我想发出这样的命令

$ sudo get_mountpoint_of /var/spool

并得到正确答案:

/var/spool is part of / and is mounted on /dev/sda1

答案1

在linux系统上你可以这样做:

findmnt -nvoSOURCE -T /*some/path

...仅打印 引用的任何文件的源设备/*some/path


选项细目:


  • -n

    • 省略列标题
  • -oSOURCE

    • 仅选择SOURCE设备输出列,尽管还有许多其他列。

    • 附加,TARGET以列出挂载点列。

  • -v

    • 省略了[...]任何可能的部分/dev/device[/bindmnt]结果
  • -T

    • 指示findmnt向后处理其--target参数,直到在报告之前找到有效的安装点。

了解更多信息:

man findmnt

答案2

您不需要这样做sudo。您可以编写一个脚本,该脚本对起点执行“df”,然后从输出中读取安装点。如果安装点不是“/”,那么您的脚本将重复出现,询问在哪里已安装。

例如,在手头的机器上,我有

$ df /var/log
Filesystem                                             1K-blocks     Used Available Use% Mounted on
/dev/disk/by-uuid/8a1efcd1-0d32-4674-aa7a-c24c2cd924fd  19751804 12437492   6310948  67% /

出于一般性,您的脚本必须认识到(对于本例),磁盘信息可能由 LVM 或 udev 管理,并获取详细信息可能需要sudo)。

OP提出的案例当然更简单。对于同一台机器,我在磁盘设备上有一个文件系统:

$ df /users
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sdb1        8255928 5548304   2288248  71% /users

同样,脚本只需查看“df”的输出即可确定是否完成或重复,询问在哪里已安装。

答案3

有关挂载点信息

df -P file/goes/here | tail -1 | cut -d' ' -f 1 

对于“部分”信息

df /mountpointFromTheLastCommand | tail -1 | awk '{print $6}'

例子 :

[root@xxx ~]# df -P /root/download/ | tail -1 | cut -d' ' -f 1
/dev/sda2
[root@xxx ~]# df /dev/sda2 | tail -1 | awk '{print $6}'
/

有了这些信息,您可以说 /root/download 是 / 的一部分,并且安装在 /dev/sda2 =]

这就是想法,你可以优化它,使其与你想要的输出一致。

相关内容