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

Linux 用于在整个UNIX操作系统中监视/报告文件的守护进程,linux,perl,file,unix,Linux,Perl,File,Unix,我必须编写一个Unix/Linux守护程序,它应该在不同位置的任何文件目录中监视特定的文件集(例如*.log),并向我报告。然后我必须读取所有新修改的文件,然后我必须处理它们,并将灰色数据推送到Elasticsearch中 对如何实现这一目标有何建议 我尝试了各种Perl模块(例如,File::ChangeNotify,File::Monitor),但对于这些模块,我需要指定目录,我不希望这样做:我需要动态生成文件列表,还需要内容 是否有任何方法可以调用OS系统调用来创建文件,然后读取新生成/修

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

对如何实现这一目标有何建议

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


是否有任何方法可以调用OS系统调用来创建文件,然后读取新生成/修改的文件?

不幸的是,这并不像听起来那么简单。(在某些平台上)有钩子,可以在特定inode上触发事件

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


cron
中运行计划任务可能会更简单,但不会太频繁,因为像这样旋转文件系统是脏的-与
File::Find
或类似的工具一起,只是偶尔运行搜索

为什么这个标签上有redis?此外,Perl模块名称区分大小写。CPAN上没有
文件
命名空间。有一个递归选项。@simbabque我标记redis的原因是我必须将所有格雷普数据从日志推送到redis,然后推送到elasticsearch@reinierpost“你能给我一个满足我要求的片段吗?”Shantesh说,但这与你的问题无关。你应该试着为更多的理论类问题制定一个答案。不要期望人们只为你做你的工作和编写代码。这不是堆栈溢出的目的。如果你想这样做,就请一家中介公司。