开发者社区> 问答> 正文

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

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

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

展开
收起
祖安文状元 2020-01-06 15:22:02 418 0
1 条回答
写回答
取消 提交回答
  • 由于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

    2020-01-06 15:22:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
低代码开发师(初级)实战教程 立即下载