8.8 对文件及目录访问进行记录
记录文件及目录访问对于跟踪文件和目录的变化很有帮助。这则攻略将讲解如何记录用户访问。
8.8.1 新手上路
inotifywait
命令可以用来收集有关文件访问的信息。Linux发行版并没有默认包含这个命令,你得用软件包管理器自行安装inotify-tools
。这个命令还需要将inotify
支持编译入Linux内核,好在大多数新的GNU/Linux发行版都在内核中启用了inotify
。
8.8.2 实战演练
来看看用来监视目录访问的shell脚本:
- #/bin/bash
- #文件名: watchdir.sh
- #用途:监视目录访问
- path=$1
- #将目录或文件路径作为脚本参数
- inotifywait -m -r -e create,move,delete $path -q
输出样例如下:
- $ ./watchdir.sh .
- ./ CREATE new
- ./ MOVED_FROM new
- ./ MOVED_TO news
- ./ DELETE news
8.8.3 工作原理
上面的脚本记录给定了路径中文件或目录的创建、移动以及删除。选项 -m
表明要持续监视变化,而不是在事件发生之后退出。-r
允许采用递归形式监视目录。-e
指定需要监视的事件列表。-q
用于减少冗余信息,只打印出所需要的信息。命令输出可以被重定向到日志文件。
我们可以从事件列表中添加或删除事件。一些重要的事件如表8-2所示。
表 8-2
事 件 | 描 述 |
---|---|
访问(access ) | 读取文件 |
修改(modify ) | 文件内容被修改 |
属性(attrib ) | 文件元数据被修改 |
移动(move ) | 对文件进行移动操作 |
创建(create ) | 生成新文件 |
打开(open ) | 对文件进行打开操作 |
关闭(close ) | 对文件进行关闭操作 |
删除(delete ) | 文件被删除 |