Articles of inotify

是否有任何POSIX函数或glibc扩展实现宽度优先的文件树步行?

我正在编写一个使用inotify监视文件访问的守护进程,关键是我不会错过任何recursionsearch。 我发现这个有趣的想法 ,并开始实施它。 ftw()和ftw64()不使用宽度优先的algorithm,其更多的“预订”。 nftw()给了我深度优先的选项,但我担心上部叶子的比赛。 我希望我错过了一些东西,也许是一个GNU扩展? 或者我只是看着实现我自己的types安全callback(我真的不想做)? 或者,我对这种types的应用程序的宽度优先的深度优先错误的理解是什么?

Linux:在文件保存时触发Shell命令

我想在文件被修改时自动触发一个shell命令。 我认为这可以通过注册一个inotify钩子和调用system在代码中完成,但有没有一个更高级别的bash命令可以完成这个?

我可以通知我监视的文件在哪里移动?

我想在系统中移动时监视文件。 只要移动,我可以通知我新的位置吗?

inotify不发射文件修改通知

我一直在调整这里的例子,使其重复观看“修改”的文件。 我的代码在这里 。 在我的testing中,inotify通知只是在文件第一次被修改时触发(即touch )。 对该文件的任何后续修改都不会导致任何通知触发。 stat显示“修改”时间已经改变。 此外,修改代码以删除手表,并重新添加每次通知触发(即将inotify_add_watch和inotify_rm_watch移到我的示例中的while(1)循环内)并不能帮助解决此问题。 我想知道这里有没有人可以帮助我做错什么。 另外,虽然我为IN_ALL_EVENTS添加了一块手表,但我只关心IN_MODIFY事件。 不知道这是否有任何区别。 另外,这个用例不起作用吗? 我应该改变我的方法来观看目录吗? 请指教。 TIA。 编辑1:正如由themel指出的, i的处理需要一些修复。 但是即使是固定版本也不会为后续的文件系统“事件”发射通知。 另外,在目录中添加一个监视器而不是文件会显示类似的非确定性行为。 编辑2:我想得到这个基于这个答案工作的asio + inotify示例 。 不幸的是,这个例子并没有为我工作。 任何帮助将非常感激。 TIA。

在完成写入之前如何确保不读取文件

当我们知道在Linux上使用inotify监视一个目录时,一旦文件被创build(在另一个进程写完之前)我们会得到通知。 有没有一种有效的方法来确保在写入文件之前不读取文件是由其他进程完成的? 我们可能会添加延迟阅读; 但是众所周知,这是有缺陷的。 要更清楚一点的情况; 这两个进程作为不同的用户运行; 预计的负载大约是每秒创build的几百个文件。

使用inotify监视文件

我正在使用inotify来监视本地文件,例如“/ root / temp”使用 inotify_add_watch(fd, "/root/temp", mask). 当这个文件被删除时,程序将被read(fd, buf, bufSize)函数阻塞。 即使我创build一个新的“/ root / temp”文件,程序仍然是通过读取function阻止的。 我想知道如果inotify可以检测到监控的文件被创build,并且读取函数可以从fd得到的东西,使读取将永远不会被阻止。 这是我的代码: uint32_t mask = IN_ALL_EVENTS; int fd = inotify_init(); int wd = inotify_add_watch(fd, "/root/temp", mask); char *buf = new char[1000]; int nbytes = read(fd, buf, 500); 我监视了所有事件。

inotify – 如何找出哪个用户修改了文件?

我正在寻找指导如何找出哪个用户已经修改了一个特定的文件。 虽然inotify是很好的通知当一个特定的文件被触摸,我怎么知道哪个用户已经修改该文件? 我可以考虑使用lsof,但是恐怕它可能不是我想要的“实时”,也可能是对资源征税太多。 实时,我的意思是,如果用户只是简单地执行一个文件的touch命令,当我在文件上运行lsof时,它可能不会被lsof拾取。

如何监视一个完整的目录树在Linux中的变化?

我怎样才能监视整个目录树在Linux( ext3文件系统)的变化? 目前,该目录包含大约3,000个子目录中的约五十万个文件 ,以三个目录级别进行组织。 这些大多是小文件(<1kb,几个到100kb)。 这是一种排队,我需要知道什么时候在5-10秒内创build,删除或修改文件的内容。 我知道有inotify和sorting,但AFAIK他们只监视一个单一的目录,这意味着我需要3,000 inotify句柄在我的情况 – 比一般的进程允许通常的1024句柄。 还是我错了? 如果Linux系统不能告诉我需要什么:也许有一个FUSE项目模拟一个文件系统(复制一个真实的文件系统上的所有文件访问),并单独logging所有的修改(不能罚款)?

如何编写Linux新的`fanotify`文件系统监视function?

fanotify ,build立在fsnotify ,应该取代inotify代替了dnotify 。 是否有一些好的编程示例或现有的实用程序使用fanotify来监视文件系统中的更改? fanotify提供多less细节?

监视linux中文件系统变化的最好方法

我正在研究构build一个监视文件系统活动的文件系统同步实用程序,但似乎Linux内核中的一些文件系统监视function已经过时或者没有完全显示。 我的研究发现 dnotify先来通知具有通知删除,修改,访问,属性,创build,移动可以确定文件描述符的function,但现在过时了inotify和fanotify inotify出来第二个通知具有通知访问,修改,attrib,closures,移动,删除,创build等function,但它不给你一个文件描述符或过程,并会过时fanotify fanotify是最新通知的访问,修改,closures,但不通知删除或属性,但确实提供文件描述符 我需要一种确定过程(例如从fd)和删除,修改,attribs等东西,以同步一切,有什么build议? 不幸的是,dnotify似乎是最好但最落伍的