gpt4 book ai didi

linux - 如何跳过安装两次的目录?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:07 25 4
gpt4 key购买 nike

我需要递归地列出一个目录,但我想跳过已经挂载的子目录。有2种情况:

a) 一个文件系统被挂载了两次,就像这个例子:

  • “/dev/sda2”挂载在“/mnt/mnt_point1”
  • “/dev/sda2”挂载在“/mnt/mnt_point2”我想列出“/mnt”但仅在“/mnt/mnt_point1”中下降

b) 部分文件层次结构被重新挂载到其他地方,使用“mount --bind”:

  • “mount --bind/home/user/tmp/test/home/user/tmp/mounted_test”

我想列出“/home/user/tmp”但只在“测试”中下降

“statfs”和“statvfs”不提供任何信息来辨别目录是否被挂载了两次。

一种解决方案是读取“/etc/mtab”(就像“find”命令那样)并执行一些检查,但我认为这非常昂贵(每次遇到时都必须读取/etc/mtab一个目录;如果这个文件在程序启动时只读,则在两次读取之间可能会发生挂载,因此程序将不准确)。

另一种解决方案是过滤内核事件(通过 libudev 或 Netlink)并仅在发出 MOUNT 事件时读取/etc/mtab。

您还有其他建议吗?提前致谢。

最佳答案

首先阅读mtab并不像你想象的那么昂贵,如果它不改变,如果你经常访问它,linux可能会把它保存在内存中。

但出于您的目的,mtab 可能不会包含您要查找的信息。改为解析 /proc/mounts

关于linux - 如何跳过安装两次的目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3582985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com