如何监视整个目录树以查找Linux(ext3文件系统)中的更改?
目前,该目录在大约3,000个子目录中包含大约五十万个文件,以三个目录级别组织.
这些大多是小文件(<1kb,少数高达100 kb).这是一种队列,我需要知道何时创建,删除文件或在发生的5-10秒内修改其内容. 我知道有inotify和排序,但AFAIK他们只监视一个目录,这意味着在我的情况下我需要3,000个inotify句柄 – 比单个进程允许的通常1024个句柄更多.还是我错了? 如果Linux系统无法告诉我我需要什么:也许有一个FUSE项目模拟文件系统(复制真实文件系统上的所有文件访问)并单独记录所有修改(不能很好)?
解决方法:
据我所知,除了在每个目录上递归设置inotify监视之外别无他法.
也就是说,你不会用完文件描述符,因为inotify不必保留fd来监视文件或目录(它的前身,dnotify,确实受到这个限制). inotify使用“手表描述符”代替.
根据inotifywatch的文档,默认限制是8192个监视描述符,您可以通过将新值写入/ proc / sys / fs / inotify / max_user_watches来增加它.