问题标签 [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.
linux - 在linux中监视文件系统更改的最佳方法
我正在考虑构建一个监视文件系统活动的文件系统同步实用程序,但似乎 linux 内核中的某些文件系统监视功能已过时或功能不全。
我的研究发现了什么
dnotify 以通知为先,具有通知删除、修改、访问、属性、创建、移动的功能,可以确定文件描述符,但现在 inotify 和 fanotify 已过时
inotify 以通知排在第二位,具有通知访问、修改、属性、关闭、移动、删除、创建等功能,但它不会为您提供文件描述符或进程,并且会被 fanotify 过时
fanotify 是最新的通知访问,修改,关闭,但不通知删除或属性,但确实提供文件描述符
我需要一种方法来确定进程(例如从 fd)以及删除、修改、属性等内容,以便同步所有内容,有什么建议吗?不幸的是 dnotify 似乎是最好但最过时的
linux - 通过 S3 自动检测文件更改和同步
我在 Linux 系统上有一个本地媒体文件目录,我使用 s3sync 脚本与 Amazon S3 帐户同步。目前,当我知道媒体文件已被修改时,我正在手动运行 s3sync 脚本。
修改文件时如何自动运行脚本?
我正在考虑创建一个 cron 作业以每隔几分钟运行一次脚本,但这似乎是一个过多的处理,因为即使没有任何更改,脚本仍然需要扫描整个目录结构,这是相当大的。
我还考虑过incron/inotify,它允许在特定文件或目录更改时运行命令,但这些工具似乎并不自动支持监视整个嵌套目录的更改。如果我错了,请纠正我,但似乎 incron/inotify 只能监控他们被明确告知要监控的文件。例如,如果我想监视目录内任何级别的所有文件的更改,我必须编写单独的脚本来监视目录和文件添加/删除,以更新由 incron 监视的文件和目录列表。
有没有更有效的解决方案?
perl - 为什么inotify会丢失事件?
我需要使用 Perl 和Linux::Inotify2处理大量(约 100 秒)系统日志消息。
我编写了一个连续生成日志消息的测试脚本。为了处理事件,我的 Perl 脚本如下所示——
如果我取消注释 usleep 函数以模拟处理,我注意到当我停止日志生成器脚本时,inotify 脚本没有赶上它。换句话说, inotify Perl 脚本正在丢失事件。
我也没有看到任何溢出消息。
我如何确保即使我的处理速度很慢,我也不会丢失消息。换句话说,我如何定义可以临时存储消息的“缓冲区”?
python - 关于实现 pyinotify 实例来监控目录的问题
我有一些关于 pyinotify 的基本问题,我似乎无法在其他地方找到答案。
1) 对于连续目录监视器(和事件处理器),是否需要有一个 while(True) 循环,或者通知手表处理连续事件“循环”并在我移除手表时结束?
2) 如果在 inotify 实例“打开”时文件已经存在,会发生什么?最初我只想监视 IN_CREATE 但这不会处理预先存在的文件。
3) 与 #2 类似,如果在我的事件处理器函数中创建文件会发生什么?pyinotify 会将其缓存在其队列中并在“循环”再次开始时对其进行处理,还是会丢失此事件?
python - 来自外部创建的文件的 python pyinotify 事件
我有一个 pyinotify 实例监视已安装的网络驱动器(使用 CIFS 安装)的 IN_WRITE_CLOSE 事件,如果服务器本身将文件放在此目录中,则该事件会完美地拾取系统创建的事件(sudo cp、sudo mv 等)。
但是,我想获取由不同服务器和程序在此网络驱动器上创建的文件的事件。
出于某种原因,我的 inotify 实例没有看到这些事件......这是正常行为还是我的代码有问题?如果这是正常行为,有没有办法解决它,还是我必须找到除 inotify 之外的其他监控工具来收集这些事件?
更新
根据@Cedric 的回答,我将挂载点更改为 NFS,但仍然没有收到任何事件。
linux - 如何在 Linux 中监视完整的目录树的更改?
如何在 Linux(ext3文件系统)中监视整个目录树的更改?
目前,该目录在大约3,000 个子目录中包含大约50 万个文件,分为三个目录级别。
这些大多是小文件(< 1kb,一些高达 100 kb)。这是一种队列,我需要知道文件何时被创建、删除或在 5-10 秒内修改其内容。
我知道有inotify和 sorts,但是 AFAIK 他们只监视一个目录,这意味着在我的情况下我需要 3,000 个 inotify 句柄 - 比单个进程允许的通常 1024 个句柄要多。还是我错了?
如果 Linux 系统无法告诉我我需要什么:也许有一个FUSE项目可以模拟文件系统(复制真实文件系统上的所有文件访问)并单独记录所有修改(不能很好)?
inotify - inotifytools 错误
我正在使用 inotifytools 递归地监视目录。当我使用以下命令时
inotifywait ./test -m
在命令之后,如果我在 下创建导演./test
,假设./test/test2
. 然后如果我在 下做一些事情test2
,比如删除一个文件,或者添加一个文件,没有事件发生就很奇怪了。
好像没有手表test2
。
这是一个错误还是我只是以错误的方式使用?
c++ - 如何在 inotify 上创建线程 - 我必须这样做吗?
我有以下监控文件夹的代码。
我正在监视一个文件夹。如果这个文件夹被持续访问,我是否必须创建一个线程?另外我想问一下如何在这段代码上创建一个持续运行的进程?我想看到它在进程运行文件中运行(cpu - 命令行顶部)。
需要一些帮助。欣赏!!
这是代码:
你能发布我修改过的代码吗?
python - 使用 pyinotify 在目录中创建假脱机的最佳方法是什么?
我试图在创建目录时将目录中的每个文件移动到另一个文件。也许我可以干净地停止守护进程(pyinotify 实例运行),并继续在 orig/spool 目录中创建原始文件。
我想在守护进程再次启动后进行处理。也许我可以利用 inotify 内核队列?
提前致谢
c++ - 对 inotify 做出反应并打印事件的程序
我在 Ubuntu 工作。我想监视一个文件夹并打印子文件夹(打印文件)中弹出的每个事件。我有以下代码,但它不起作用。执行时,没有事件的 println。
在第二个代码中,我只看到文件夹中的事件。每个子文件夹中的事件不会弹出。
此代码仅打印我正在监视的文件夹中的事件。它不会打印每个子文件夹中的事件。我不知道如何根据我的需要改进它。