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

标签 linux monitoring filesystemwatcher inotify

我如何监控整个目录树在 Linux(ext3 文件系统)中的变化?

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

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

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

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

最佳答案

我使用 inotifywait 工具做了类似的事情:

#!/bin/bash
while true; do

inotifywait -e modify,create,delete -r /path/to/your/dir && \
<some command to execute when a file event is recorded>

done

这将在整个树上设置递归目录监视,并允许您在发生变化时执行命令。如果只想查看更改,可以添加 -m 标志使其进入监控模式。

关于linux - 如何在 Linux 中监视完整的目录树的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8699293/

相关文章:

c - 如何修复 Ubuntu 15 上 libudev 的链接器错误

c++ - QGraphicsItem::toGraphicsObject() 在由 QGraphicsPixmapItem 派生的自己的类中返回 0

java - Java中显示远程系统进程列表的库或jar

elasticsearch - Elasticsearch中的安全性设置,xpack显示不一致的行为

C# 延迟写入 XML

java - 文件/目录同步算法

c# - 没有表单的 FileSystemWatcher.SynchronizingObject

linux - 删除通讯输出中的空格

c - 防止程序在其他机器上运行

web-crawler - 如何保护/监控您的网站不被恶意用户抓取