如何查找挂载设备源的绝对路径及从/proc/self/mountinfo文件获取挂载完整路径
如何查找挂载设备源的绝对路径及从/proc/self/mountinfo文件获取挂载完整路径
嘿,这个问题我刚好折腾过,/proc/self/mountinfo绝对是Linux系统里找挂载信息的利器——内核直接维护的文件,信息准得很,不像有些用户空间的文件可能会有延迟或者被篡改。要从这里拿到挂载点的绝对路径,或者挂载源的完整路径,其实只要搞懂它的字段结构就行,咱们一步步来:
先搞懂/proc/self/mountinfo的关键字段
你先执行cat /proc/self/mountinfo看看内容,每一行用空格分隔成多个字段,其中咱们最关心的几个是:
- 第4列:挂载点的绝对路径,这就是你要找的“挂载完整路径”
- 第5列:挂载源的根路径(如果是绑定挂载,这就是源目录的绝对路径)
- 最后一列(用
$NF表示):挂载源的设备名/文件系统源(比如/dev/sda1、tmpfs或者远程共享路径)
场景1:获取挂载点的绝对路径
直接提取第4列就行,用awk命令最方便:
- 提取所有挂载点的绝对路径:
awk '{print $4}' /proc/self/mountinfo - 筛选特定挂载源对应的挂载点(比如找
/dev/sda1挂载到哪了):awk '$NF=="/dev/sda1" {print $4}' /proc/self/mountinfo
场景2:获取挂载源的绝对路径
分两种情况:
- 普通设备挂载:挂载源就是设备文件(比如
/dev/sda1),直接取最后一列:awk '{print $NF}' /proc/self/mountinfo - 绑定挂载(比如把A目录挂载到B目录):源目录的绝对路径在第5列,执行这个就能拿到:
awk '{print $5}' /proc/self/mountinfo
举个实际例子
假设/proc/self/mountinfo里有这么两行:
14 1 8:1 / /root rw,noatime shared:1 - ext4 /dev/sda1 rw,errors=remount-ro 25 14 8:1 /var/log /tmp/log rw,noatime shared:2 - ext4 /dev/sda1 rw,errors=remount-ro
- 第一行:挂载点绝对路径是
/root,挂载源设备是/dev/sda1 - 第二行:这是绑定挂载,挂载点是
/tmp/log,源目录的绝对路径是/var/log
小技巧:同时查看挂载点和对应源
想一次性看清楚挂载点和它的源?用这个命令:
awk '{print "挂载点:"$4 " | 挂载源:" $NF}' /proc/self/mountinfo
备注:内容来源于stack exchange,提问作者codego123
相关产品推荐
相关产品推荐

