我如何监控整个目录树在 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/