问题标签 [inotify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
31694 浏览

linux - 在linux中监视文件系统更改的最佳方法

我正在考虑构建一个监视文件系统活动的文件系统同步实用程序,但似乎 linux 内核中的某些文件系统监视功能已过时或功能不全。

我的研究发现了什么

dnotify 以通知为先,具有通知删除、修改、访问、属性、创建、移动的功能,可以确定文件描述符,但现在 inotify 和 fanotify 已过时

inotify 以通知排在第二位,具有通知访问、修改、属性、关闭、移动、删除、创建等功能,但它不会为您提供文件描述符或进程,并且会被 fanotify 过时

fanotify 是最新的通知访问,修改,关闭,但不通知删除或属性,但确实提供文件描述符

我需要一种方法来确定进程(例如从 fd)以及删除、修改、属性等内容,以便同步所有内容,有什么建议吗?不幸的是 dnotify 似乎是最好但最过时的

0 投票
3 回答
5631 浏览

linux - 通过 S3 自动检测文件更改和同步

我在 Linux 系统上有一个本地媒体文件目录,我使用 s3sync 脚本与 Amazon S3 帐户同步。目前,当我知道媒体文件已被修改时,我正在手动运行 s3sync 脚本。

修改文件时如何自动运行脚本?

我正在考虑创建一个 cron 作业以每隔几分钟运行一次脚本,但这似乎是一个过多的处理,因为即使没有任何更改,脚本仍然需要扫描整个目录结构,这是相当大的。

我还考虑过incron/inotify,它允许在特定文件或目录更改时运行命令,但这些工具似乎并不自动支持监视整个嵌套目录的更改。如果我错了,请纠正我,但似乎 incron/inotify 只能监控他们被明确告知要监控的文件。例如,如果我想监视目录内任何级别的所有文件的更改,我必须编写单独的脚本来监视目录和文件添加/删除,以更新由 incron 监视的文件和目录列表。

有没有更有效的解决方案?

0 投票
2 回答
1799 浏览

perl - 为什么inotify会丢失事件?

我需要使用 Perl 和Linux::Inotify2处理大量(约 100 秒)系统日志消息。

我编写了一个连续生成日志消息的测试脚本。为了处理事件,我的 Perl 脚本如下所示——

如果我取消注释 usleep 函数以模拟处理,我注意到当我停止日志生成器脚本时,inotify 脚本没有赶上它。换句话说, inotify Perl 脚本正在丢失事件。

我也没有看到任何溢出消息。

我如何确保即使我的处理速度很慢,我也不会丢失消息。换句话说,我如何定义可以临时存储消息的“缓冲区”?

0 投票
1 回答
2103 浏览

python - 关于实现 pyinotify 实例来监控目录的问题

我有一些关于 pyinotify 的基本问题,我似乎无法在其他地方找到答案。

1) 对于连续目录监视器(和事件处理器),是否需要有一个 while(True) 循环,或者通知手表处理连续事件“循环”并在我移除手表时结束?

2) 如果在 inotify 实例“打开”时文件已经存在,会发生什么?最初我只想监视 IN_CREATE 但这不会处理预先存在的文件。

3) 与 #2 类似,如果在我的事件处理器函数中创建文件会发生什么?pyinotify 会将其缓存在其队列中并在“循环”再次开始时对其进行处理,还是会丢失此事件?

0 投票
1 回答
1069 浏览

python - 来自外部创建的文件的 python pyinotify 事件

我有一个 pyinotify 实例监视已安装的网络驱动器(使用 CIFS 安装)的 IN_WRITE_CLOSE 事件,如果服务器本身将文件放在此目录中,则该事件会完美地拾取系统创建的事件(sudo cp、sudo mv 等)。

但是,我想获取由不同服务器和程序在此网络驱动器上创建的文件的事件。

出于某种原因,我的 inotify 实例没有看到这些事件......这是正常行为还是我的代码有问题?如果这正常行为,有没有办法解决它,还是我必须找到除 inotify 之外的其他监控工具来收集这些事件?

更新

根据@Cedric 的回答,我将挂载点更改为 NFS,但仍然没有收到任何事件。

0 投票
9 回答
78213 浏览

linux - 如何在 Linux 中监视完整的目录树的更改?

如何在 Linux(ext3文件系统)中监视整个目录树的更改?

目前,该目录在大约3,000 个子目录中包含大约50 万个文件,分为三个目录级别。

这些大多是小文件(< 1kb,一些高达 100 kb)。这是一种队列,我需要知道文件何时被创建、删除或在 5-10 秒内修改其内容。

我知道有inotify和 sorts,但是 AFAIK 他们只监视一个目录,这意味着在我的情况下我需要 3,000 个 inotify 句柄 - 比单个进程允许的通常 1024 个句柄要多。还是我错了?

如果 Linux 系统无法告诉我我需要什么:也许有一个FUSE项目可以模拟文件系统(复制真实文件系统上的所有文件访问)并单独记录所有修改(不能很好)?

0 投票
2 回答
470 浏览

inotify - inotifytools 错误

我正在使用 inotifytools 递归地监视目录。当我使用以下命令时

inotifywait ./test -m

在命令之后,如果我在 下创建导演./test,假设./test/test2. 然后如果我在 下做一些事情test2,比如删除一个文件,或者添加一个文件,没有事件发生就很奇怪了。

好像没有手表test2

这是一个错误还是我只是以错误的方式使用?

0 投票
0 回答
723 浏览

c++ - 如何在 inotify 上创建线程 - 我必须这样做吗?

我有以下监控文件夹的代码。

我正在监视一个文件夹。如果这个文件夹被持续访问,我是否必须创建一个线程?另外我想问一下如何在这段代码上创建一个持续运行的进程?我想看到它在进程运行文件中运行(cpu - 命令行顶部)。

需要一些帮助。欣赏!!

这是代码:

你能发布我修改过的代码吗?

0 投票
1 回答
828 浏览

python - 使用 pyinotify 在目录中创建假脱机的最佳方法是什么?

我试图在创建目录时将目录中的每个文件移动到另一个文件。也许我可以干净地停止守护进程(pyinotify 实例运行),并继续在 orig/spool 目录中创建原始文件。

我想在守护进程再次启动后进行处理。也许我可以利用 inotify 内核队列?

提前致谢

0 投票
1 回答
712 浏览

c++ - 对 inotify 做出反应并打印事件的程序

我在 Ubuntu 工作。我想监视一个文件夹并打印子文件夹(打印文件)中弹出的每个事件。我有以下代码,但它不起作用。执行时,没有事件的 println。

在第二个代码中,我只看到文件夹中的事件。每个子文件夹中的事件不会弹出。

此代码仅打印我正在监视的文件夹中的事件。它不会打印每个子文件夹中的事件。我不知道如何根据我的需要改进它。