Linux 如何确定路径位于物理设备上还是内存中?

Linux 如何确定路径位于物理设备上还是内存中?,linux,Linux,我正在寻找一种方法,通过编程知道路径是否指向物理设备或内存中 例如,我注意到du命令为/sys或/proc中的路径打印的大小为零,但我不确定这是否可靠,因为我认为磁盘上的文件大小可以为零。这是不容易实现的,因为其原理(一个带有挂载点的文件系统,网络透明,所有内容都是linux中使用的文件(或文件夹)。想象一下:一个网络文件系统挂载到您的系统中。它不在您计算机的任何物理设备中-这是物理的还是非物理的 想到的唯一启发是将文件系统与预定义列表进行比较:检查mount的输出,例如: tmpfs on /

我正在寻找一种方法,通过编程知道路径是否指向物理设备或内存中


例如,我注意到
du
命令为
/sys
/proc
中的路径打印的大小为零,但我不确定这是否可靠,因为我认为磁盘上的文件大小可以为零。

这是不容易实现的,因为其原理(一个带有挂载点的文件系统,网络透明,所有内容都是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)
第一列是源设备-在第一个条目上没有设备geiven,只有虚拟文件系统
tmpfs
,而在第二个条目中,我们看到一个合适的设备
/dev/sda2

设备不能保证物理存储,例如有
/dev/mem
,它可以直接访问计算机的内存

因此,我的建议是找出哪个挂载点应用于路径(尝试
lsblk
),在
mount
的输出中找到该挂载点。如果此挂载点与
/dev/which
形式的设备不匹配,则假定它在内存中

使用@Chris的建议,例如尝试以下
findmnt-T/proc/net/stat/arp\u缓存

TARGET SOURCE FSTYPE OPTIONS
/proc  proc   proc   rw,nosuid,nodev,noexec,relatime

相关列是
源代码

我同意文件系统类型是最好的。对于使用脚本解析结果,
findmnt
mount
容易得多。它有很多选项来控制输出内容和方式。哦,很好,我不知道这一个