inotify可以对linux文件系统进行高效性、细粒度、异步的监控,用于通知用户控件程序的文件系统变化。inotify可以监控文件,也可以监控目录,配合rsync实现文件的实时同步功能。
在这里插入代码片
安装inotify软件
先检查自己的系统版本(uname -r)我的是centos 7的系统
[root@oa ~]# uname -r
3.10.0-1127.13.1.el7.x86_64
检查是否安装了这个软件
[root@oa ~]# rpm -qa inotify-tools
检查仓库中是否有软件
[root@oa ~]# yum search inotify-tools
若软件在仓库中不存在则安装对应的epel源
[root@oa ~]# wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
清理缓存
[root@oa ~]# yum clean all
[root@oa ~]# yum makecache
安装inotify-tools软件
[root@oa ~]# yum install inotify-tools -y
简单举例
在234这台主机上进行测试。对/home/awk目录下的文件的增删改查进行监控。打开两个ssh。一个输入监控命令,另一个进行观察
[root@oa ~]# inotifywait -mrq -e 'create,delete,close_write,attrib,moved_to' --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f %e' /home/awk
在234主机的/home/awk目录下进行如下操作
同时可以观察另一个ssh页面的监控画面
命令的讲解
inotifywait -mrq -e 'create,delete,close_write,attrib,moved_to' --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f %e' /home/awk
参数:
参数 | 说明 |
---|---|
-m | 持续监听 |
-r | 使用递归形式监视目录 |
-q | 减少冗余信息,只打印出需要的信息 |
-e | 指定要监视的事件,多个时间使用逗号隔开 |
–timefmt | 时间格式 |
–format | 监听到的文件变化的信息 |
–timefmt 说明:
Ymd分别表示年月日,H表示小时,M表示分钟
–format 说明:
参数 | 说明 |
---|---|
%w | 表示发生事件的目录 |
%f | 表示发生事件的文件 |
%e | 表示发生的事件 |
%Xe | 事件以“X”分隔 |
%T | 使用由–timefmt定义的时间格式 |
可监控的事件:
参数 | 说明 |
---|---|
access | 访问,读取文件。 |
modify | 修改,文件内容被修改 |
attrib | 属性,文件元数据被修改。 |
move | 移动,对文件进行移动操作。 |
create | 创建,生成新文件 |
open | 打开,对文件进行打开操作 |
close | 关闭,对文件进行关闭操作。 |
delete | 删除,文件被删除。 |