amorfis Asked: 2009-07-12 00:57:54 +0800 CST2009-07-12 00:57:54 +0800 CST 2009-07-12 00:57:54 +0800 CST 是否可以记录对磁盘/目录的每次访问? 772 我需要一些脚本来记录(仅输出到控制台或文件)每次访问某个磁盘或目录(对我都有效)。我还想知道究竟访问了什么(哪个子目录或文件)。我的系统是ubuntu linux。有可能吗?我该怎么做? hard-drive logging monitoring 4 个回答 Voted LapTop006 2009-07-12T01:08:01+08:002009-07-12T01:08:01+08:00 如果要使用简单的过滤器脚本监视单个程序 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 Best Answer womble 2009-07-12T01:17:31+08:002009-07-12T01:17:31+08:00 看看inotify,这几乎就是它的用途。IBM 在http://www.ibm.com/developerworks/linux/library/l-inotify.html有一个不错的介绍(虽然有些过时) chmeee 2009-07-12T06:55:21+08:002009-07-12T06:55:21+08:00 您可以使用incron,这是一个类似 cron 的工具,用于处理来自 inotify 的文件系统事件。 您可以定义每次 IN_ACCESS 事件发生时要执行的操作。 配置就像 cron 一样简单: <path> <mask> <command> 在哪里: <path>是一个文件系统路径(每个空格必须在前面加上一个反斜杠) <mask>是符号(参见 inotify.h;使用逗号分隔符号)或事件的数字掩码 <command>是在事件上运行的应用程序或脚本 Saurabh Barjatiya 2009-07-12T05:37:16+08:002009-07-12T05:37:16+08:00 如果您确实确定要查看较大的输出,则可以使用 auditd。但是,如果要将其打印到文件中,则可能会导致无限循环,因为对文件的任何访问都意味着将其打印到日志文件中。打印到日志文件也是对文件的访问,因此它也应该打印到日志文件中。所以要小心。 即使没有无限循环,这将打印的数据量也应该非常大。如果您将问题更改为您希望通过此监控实现什么,人们可能会建议一种更好的方法,然后记录对所有文件的访问。
如果要使用简单的过滤器脚本监视单个程序 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
看看inotify,这几乎就是它的用途。IBM 在http://www.ibm.com/developerworks/linux/library/l-inotify.html有一个不错的介绍(虽然有些过时)
您可以使用incron,这是一个类似 cron 的工具,用于处理来自 inotify 的文件系统事件。
您可以定义每次 IN_ACCESS 事件发生时要执行的操作。
配置就像 cron 一样简单:
在哪里:
<path>
是一个文件系统路径(每个空格必须在前面加上一个反斜杠)<mask>
是符号(参见 inotify.h;使用逗号分隔符号)或事件的数字掩码<command>
是在事件上运行的应用程序或脚本如果您确实确定要查看较大的输出,则可以使用 auditd。但是,如果要将其打印到文件中,则可能会导致无限循环,因为对文件的任何访问都意味着将其打印到日志文件中。打印到日志文件也是对文件的访问,因此它也应该打印到日志文件中。所以要小心。
即使没有无限循环,这将打印的数据量也应该非常大。如果您将问题更改为您希望通过此监控实现什么,人们可能会建议一种更好的方法,然后记录对所有文件的访问。