由于Linux中使用的原理(一个具有挂载点的文件系统,网络透明性,所有内容都是文件(或文件夹)),这很难实现。想象一下:一个安装在系统中的网络文件系统。它不在计算机的任何物理设备中-这是物理设备还是不是?
想到的唯一启发式方法是将文件系统与预定义列表进行比较:检查的输出mount
,例如:
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204096k,mode=755)
/dev/sda2 on / type ext4 (rw,relatime,errors=remount-ro)
第一列是源设备-在第一个条目上没有设备连接,只有虚拟文件系统,tmpfs
而在第二个条目中,我们看到了一个合适的设备/dev/sda2
。
设备不能保证物理存储,/dev/mem
例如,可以直接访问计算机的内存。
因此,我的建议是找出适用于路径的安装点(尝试lsblk
),在的输出中找到该安装点mount
。如果此挂载点与设备int不匹配,则以/dev/WHATEVER
假定它在内存中的形式
使用@Chris的建议,尝试例如findmnt -T /proc/net/stat/arp_cache
:
TARGET SOURCE FSTYPE OPTIONS
/proc proc proc rw,nosuid,nodev,noexec,relatime
相对的列是 SOURCE
我同意文件系统类型是您最好的选择。使用脚本解析结果
findmnt
比容易得多mount
。它具有许多选项来控制输出什么以及如何输出。噢,很好,不知道那个