用于整个UNIX操作系统中的文件监视/报告的守护程序



我必须编写一个Unix/Linux守护进程,它应该在不同的位置监视任何文件目录中的特定文件集(例如*.log)并向我报告。然后我必须读取所有新修改的文件,然后我必须处理它们,并将grepped数据推送到Elasticsearch中。

关于如何实现这一目标,有什么建议吗?

我尝试了各种Perl模块(例如File::ChangeNotifyFile::Monitor),但对于这些模块,我需要指定目录,这是我不想要的:我需要动态生成的文件列表,还需要内容。

有没有什么方法可以让我调用操作系统调用来创建文件,然后读取新生成/修改的文件?

不幸的是,这并不像听起来那么容易。您有到inotify的挂钩(在某些平台上),可以在特定的inode更改上触发事件。

但对于更广泛的范围变化,你真正谈论的是审计和会计跟踪——尽管这不是一个小话题——没有多少人做审计,这是有原因的。它很复杂,而且非常特定于平台(即使是不同版本的Linux也会有不同的做法)。你最喜欢的搜索引擎应该能够帮助你找到与你的平台相关的答案。

cron中运行调度任务可能更简单,但不要太频繁,因为旋转这样的文件系统是脏的——与File::Find一起运行,或者类似于偶尔运行搜索。

最新更新