linux中对文件及目录访问进行记录的方法介绍

发布时间:2019-10-06编辑:脚本学堂
inotifywait命令可以用来收集有关文件访问的消息。linux发行版并没有默认包含这个命令,需要使用软件包管理器自行安装inotify-tools。

记录文件及目录访问,对于跟踪文件和目录的变化很有帮助。

inotifywait命令可以用来收集有关文件访问的消息。
linux发行版并没有默认包含这个命令,需要使用软件包管理器自行安装inotify-tools。
这个命令还需要将inotify支持编译入linux内核,好在大多数新的GNU/Linux发行版都在内核中启用了inotify。

下面,我们来看一个监控对文件及目录访问进行记录的例子。

监控目录访问的shell/ target=_blank class=infotextkey>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

脚本分析
以上的脚本记录给定了路径中文件或目录的创建、移动以及删除。
选项:
-m 表明要持续监视变化,而不是在事件发生之后退出。
-r 允许采用递归形式监视目录。
-e 指定需要监视的事件列表。
-q 用于减少冗余信息。只打印出所需要的信息。命令输出可以被重定向日志文件中。

在实际的应用中,我们可以从事件列表中添加或删除事件。

一些重要的事件与描述列表
访问(access)  读取文件
修改(modify)   文件内容被修改
属性(attrib)      文件元数据被修改
移动(move)     对文件进行移动操作
创建(create)   生成新文件
打开(open)     对文件进行打开操作
关闭(close)    对文件进行关闭操作
删除(delete)   文件被删除