linux inotify 事件用于重命名()并覆盖

2024-02-09

我有一个小型应用程序,它监视目录树中特定类型的文件名(*.monitored)。它统计匹配文件的数量,使用 inotify 监视添加或删除匹配文件的各种事件,并可以轮询报告当前文件数量,以及过去几年添加和删除文件的平均速率秒。目录树可以包含数十万个文件,因此我试图避免维护受监视文件的列表。

如果我运行:

touch foo.monitored

我得到 IN_CREATE,并设置 num_files=1

touch foo.ignored

我得到 IN_CREATE,忽略它,并保留 num_files=1

mv foo.ignored foo.monitored

生成:

IN_MOVED_FROM 为 foo.ignored 我忽略了它,所以 num_files=1

IN_MOVED_TO 为 foo.monitored,我将其作为新文件,因此设置 num_files=2,但是旧的 foo.monitored 已被覆盖,所以我的总数是错误的。

我找不到表明旧 foo.monitored 消亡的事件 - 有没有办法在不维护巨大的文件名结构的情况下做我想做的事情?

Thanks!


不,inotify 不会在这里帮助你。在这种情况下,它不会发出删除事件。

也许一种折衷的解决方案是记录每个目录中有多少个受监视的文件,然后每次收到不明确的信号时重新扫描该目录?

然而,使用 inotify 来监视目录树有更大的问题。您是否考虑过如果将包含数千个受监视文件的目录移入或移出树会发生什么情况?即使在树中移动目录也是有问题的。


编辑:其他想法:

  1. 分别在每个文件上添加 inotify 监视。这或许不是一个好的计划。

  2. 计数器只有在您读取时才准确;任何读取计数然后期望与读取的内容相匹配的调用者都会有一个令人讨厌的竞争条件错误等待发生。因此,接受计数器可能有点错误,并在有机会时纠正它可能是可以的。

  3. 每 5 个移动事件后进行一次全面扫描。

  4. 移动事件发生后,等待 30 秒查看是否还有更多事件,然后才进行扫描。

  5. 将树分成几个部分(“桶”),并记录每个部分的计数。这应该会减少扫描开销。

  6. 记录每个受监控文件路径的哈希值。与记录实际文件名相比,这可能会减少内存/麻烦。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux inotify 事件用于重命名()并覆盖 的相关文章

随机推荐

  • 为什么我们使用双斜杠而不是 http

    我看到一些网页将 javascript 文件链接到这样的页面 为什么我们使用双斜杠 代替http or https 从绝对网址开始 有什么不同 该协议将从您所在的任何页面继承 如果您的网站可以采用不同的协议 http在主页上 https例如
  • Mac用brew安装python3.6

    我想安装 python 3 6 版本 当我做brew install python它安装最新版本的 python 即3 8 我尝试了下面的解决方案 但它给了我错误 brew install ignore dependencies https
  • 通过注释使用 Hibernate UUIDGenerator

    我使用我的 uuid 如下 Id GeneratedValue generator uuid GenericGenerator name uuid strategy uuid Column name uuid unique true pri
  • 如何动态修改Android布局XML

    我是 Android 开发新手 我将开发一个 Android 应用程序 在此应用程序中 我想动态生成 xml 布局 登录应用程序后 服务器将发送带有控件描述的 xml 模板 其中包括不同的属性描述 每个控件的验证 最大长度 控件的大小等 这
  • os Catalina 和 Laravel Homestead MySql 错误:ERROR 2007 (HY000):协议不匹配;服务器版本 = 11,客户端版本 = 10

    我正在尝试连接到MySQLVagrant 版本中的服务器Laravel Homestead 运行MySQL 5 7 我似乎从来没有遇到过任何问题 但在装有 Catalina 的新笔记本电脑上 尝试使用推荐设置进行连接时出现以下错误 mysq
  • 从 MailItem (Microsoft.Office.Interop.Outlook) 获取唯一 ID?

    我正在创建一个应用程序来读取 Outlook 中收到的电子邮件 读取的过程大概是这样的 using Outlook Microsoft Office Interop Outlook var app new Outlook Applicati
  • 类似于 Bitbucket 的软件,我可以自行托管

    是否有类似于 Bitbucket 的系统可供我自行托管 我试图在网上四处看看是否有什么东西 但我似乎找不到任何东西 我们现在正在使用Redmine 但Redmine不支持每个项目多个存储库 我希望能够实现的 Bitbucket 功能包括分叉
  • 公共/受保护的类属性不会覆盖父类的私有属性吗?

    在父类上声明私有属性 然后在子类上将该属性重新声明为公共属性或受保护属性 当您创建 Child 类的实例并调用从 Parent 类继承的方法时 使用 Parent 类上的属性 而不是 Child 类上的属性 如果父类上的属性的初始声明是公共
  • 如何在 TinyMCE for Plone 中将 替换为

    我想在 TinyMCE 中用强标签替换粗体标签 如何在 Plone 中使用 Products TinyMCE 做到这一点 我读了TinyMCE文档 http www tinymce com wiki php Configuration va
  • 计算表结果:使用单选按钮值的 PHP switch case

    我编辑了这篇文章以便更好地理解 这是我作为学生实习生的第一个项目 它是一个记录计算机设备的设备监控系统 这是页面中的代码的一部分 该页面包含过滤选项和显示计算机设备列表的表格 过滤选项包含几个单选按钮 它们属于两个类别 状态 和 条件 请参
  • jQuery 连续鼠标按下

    我有以下代码片段 document mousedown function event doSomething 我可以捕获mousedown活动成功 我正在尝试执行以下操作 捕捉第一个mousedown event 我想检测用户是否仍然按住鼠
  • 如何在 C 中使用 printf 打印 unsigned long int ? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在C中打印 unsigned long https stackoverflow com questions 3209909 how to printf unsigned long in gcc 我
  • 为什么我的愿望清单仅限于一项?

    我使用magento 1 9 我的愿望清单有问题 出于某种原因 它只会让我在我的愿望清单中包含一个项目 当我将另一个项目添加到愿望清单时 它会替换我的愿望清单中已有的项目 有配置中没有任何内容来限制愿望清单项目 我只是有点困惑为什么要这样做
  • 如何将 POST 请求重定向到在 MVC 中维护模型值的 url

    我有一个相当标准的排序 过滤器 页面搜索表单 但需要控制 url 的格式 排序 过滤器 页面参数都应该是 url 的一部分 以便可以将地址通过电子邮件发送给某人 当添加另一个过滤器参数时 会发出 POST 请求 我的控制器方法如下所示 Ht
  • RecyclerView 与 ImageView 以及不同的 Activity

    我拥有的 一个 RecyclerView 其中包含酒吧 咖啡店等地方的图片 我想要的 当您单击这些图像之一时 我会向您显示所选地点的信息 我的问题 我该如何设置OnCLickListener例如第三张图片 很多人告诉我在我的 onBindV
  • 如何在matplotlib条形图后面绘制网格线

    x 01 02 02 02 03 02 04 02 05 02 y 2 2 3 7 2 fig ax plt subplots 1 1 ax bar range len y y width 0 3 align center color sk
  • .htaccess 将所有内容重写到父目录

    我正在尝试重写对父目录的每个请求 这是我的 htaccess 的内容 RewriteEngine on RewriteRule 1 不幸的是 这不起作用并导致 错误请求 错误 这可能吗 应该夹在 之间 这样系统就知道它应该将表达式 记忆 为
  • Visual Studio 2017 控制台应用程序:预编译头

    最近我更新了我的 Visual Studio 2017 从那时起 我无法创建 Windows 控制台应用程序项目 文件 新建 项目 我选择了 已安装 Visual C Windows控制台应用程序 当我单击 确定 时 没有出现应用程序设置向
  • 将自定义变量/参数从电子邮件模板传递到 phtml 文件

    我被困在我的自定义代码中 我想将自定义变量从电子邮件模板传递到 pthml 文件 编辑文件 应用程序 代码 本地 法师 销售 模型 Order php 在这个函数中 public function sendNewOrderEmail def
  • linux inotify 事件用于重命名()并覆盖

    我有一个小型应用程序 它监视目录树中特定类型的文件名 monitored 它统计匹配文件的数量 使用 inotify 监视添加或删除匹配文件的各种事件 并可以轮询报告当前文件数量 以及过去几年添加和删除文件的平均速率秒 目录树可以包含数十万
Powered by Hwhale