我需要一些脚本来记录(仅输出到控制台或文件)对某个磁盘或目录的每次访问(对我来说都可以)。我还想知道究竟访问了什么(哪个子目录或文件)。我的系统是 ubuntu linux。这可能吗?我该怎么做?
答案1
看看 inotify,它就是为此而生的。IBM 有一个还算不错的介绍(虽然有些过时了),网址为http://www.ibm.com/developerworks/linux/library/l-inotify.html
答案2
如果您想要使用简单的过滤脚本来监控单个程序 strace 的操作,通常可以查看 SElinux 的“auditd”。
http://en.wikipedia.org/wiki/Strace http://linux.die.net/man/8/auditd
在 Windows 方面,查看 SysInternals 人员提供的 filemon。
http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx
答案3
您可以使用因克龙,这是一个类似于 cron 的工具,用于处理来自 inotify 的文件系统事件。
您可以定义每次发生 IN_ACCESS 事件时执行的操作。
配置和 cron 一样简单:
<path> <mask> <command>
在哪里:
<path>
是文件系统路径(每个空格前面必须加一个反斜杠)<mask>
是事件的符号(参见 inotify.h;使用逗号分隔符号)或数字掩码<command>
是在事件上运行的应用程序或脚本
答案4
如果您确实希望看到如此大的输出,那么您可以使用 auditd。但是如果您想将其打印到文件中,则可能会导致无限循环,因为对文件的任何访问都意味着将其打印到日志文件中。打印到日志文件也是对文件的访问,因此它也应该打印到日志文件中。所以要小心。
即使没有无限循环,这将打印的数据量也应该非常大。如果你将问题改为你想通过这种监控实现什么,也许人们可以建议一种比记录对所有文件的访问更好的方法。