我正在linux中搜索一个监视文件的工具。 例如,我需要知道文件发生了什么。就像创建,重写,阅读等一样。
我知道我可以使用inotify来实现这一目标。但我需要更多细节信息。 例如,我可以知道创建文件的事件。但我想要的不仅是文件被创建,而且还有它创建的文件的大小。 例如,要读取文件,我不仅想知道我发生的事件读取文件,还想知道读取文件的细节,例如它读取的文件的偏移量。
有没有人可以帮忙解决这个问题?
答案 0 :(得分:1)
auditd是一个不错的选择。
否则,使用sys/inotify.h
会通过查看struct inotify_event
struct。
答案 1 :(得分:0)
如果您需要详细信息,那么您将不得不编写一个内核模块来挂钩VFS;甚至审计子系统也没有所有这些细节。
答案 2 :(得分:0)
据我所知,内核没有提供该深度细节的基础结构。 这种支持意味着过多的监控挂钩甚至可能影响系统的性能。你必须编写自己的内核代码才能收到这类信息......
您似乎也对某些操作的粒度感到困惑。例如,当通过open()
系统调用创建文件时,它最初为空。您需要额外的系统调用(例如write()
或lseek()
)才能更改其大小。我不知道任何创建具有给定大小的文件的原子操作。
也就是说,您可以使用以下替代方案中的一种或组合: