如何计算文件/目录被打开的次数?

如何计算文件/目录被打开的次数?

我正在尝试查找文件打开的次数(自操作系统诞生以来)。我打算通过 stat 来执行此操作,但大多数标志仅返回上次打开时间之间的差异。

答案1

这个答案解释道什么需要做,但具体细节如何取决于你的分布、你的设置和目的,以及你选择用来解析数据的工具:

你正在寻找的是已审核Linux 中的守护进程。来自手册页auditd(8)

审计是 Linux 审计系统的用户空间组件。它负责将审计记录写入磁盘。查看日志时使用澳搜或者奥雷波特实用程序。配置审计规则是通过审计控制实用程序。在启动期间/etc/audit/audit.rules审计控制并加载到内核中。或者,还有一个 augenrules 程序,它读取位于中的规则/etc/audit/rules.d/并将其编译成 audit.rules文件。审计守护程序本身有一些管理员可能希望自定义的配置选项。它们位于文件中找到 auditd.conf

根据您的指定,审计使用内核内置函数在进行某些系统调用时创建日志。设置完成后,您将在/var/log/audit发行版的类似位置找到日志。

要审计对文件的访问,您可以使用类似如下的方法:

auditctl -w /path/to/interesting/files/ -p rwxa -k myfileaudits

其中-w,指定文件路径-p指定系统将审计r欧洲航空安全局仪式,eX处决,以及A属性或权限更改。最后,该-k选项允许您指定一个任意键,用于使用搜索此规则时使用澳搜

请注意,尽管审计通过系统调用运行,-p r不跟踪功能,而是打开这样,日志就不会因每次读取而泛滥,而是每次打开文件进行读取时都会创建一个条目。

一旦开启了审计功能,并准备好日志,ausearch 便可用于解析这些日志,以查找对指定文件的所有访问,并且可以使用标准文本或统计工具来生成计数。这些计数可能不同于和,用于grep计算wc -l日志条目,或者结合使用脚本和GNU 路由或者格努普特生成图表和报告。


另一种方法是使用SELinux。虽然 SELinux 是一个访问控制工具,通常只记录访问拒绝,但可以将其设置为记录所有访问,并向 auditd 提供类似的信息。


编辑:如果需要访问记录从一开始就:例如,在 OS 安装期间、在 auditd 启动之前或 auditd 安装之前,则需要采取更极端的措施。initrd.img可能需要创建自定义安装程序或自定义启动文件,以便加载所需的调试器或内核级跟踪工具。这些跟踪工具可能包括跟踪性能系统水龙头克塔普或类似的调试器级工具来捕获启动过程中的访问。一个很好的参考是http://www.brendangregg.com/linuxperf.html这种系统性能分析(而非审计)的一个例子是启动图

然而,设置这个超出了我的经验范围 - 希望参考资料有用。

相关内容