在Linux系统中使用inotifywait监控文件变动
1、先安装EPEL安装源
根据自己的系统选择相对应的包安装
CentOS6/RHEL6
#yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
CentOS7/RHEL7
#yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
CentOS8/RHEL8
#yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
2、安装inotify-tools工具
# yum install inotify-tools
3、执行inotifywait命令确认是否安装成功
# inotifywait -h
4、在使用方法下面可以看到inotifywait支持监控哪些事件择泛:
access 读文件或者目录
modify 修改文件或者目录
attrib 文件良袭或者目录属性的改变
close_write 写完文件或者目录后关闭
close_nowrite 读完文件或者目录后关闭
close 读写文件或者目录后关闭
open 文件或者目录打开
moved_to 文件排婶侵或者目录移动监控目录下
moved_from 文件或者目录从监控目录中移出
move 文件或者目录在监控目录中移出或者移进
create 在监控目录中新建文件或者目录
delete 在监控目录中删除文件或者目录
delete_self 文件或者目录被删除
unmount 文件目录被umount
1、监控/etc目录中的文件和目录修改、删除、新建、属性的改变:
# inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f %e' -e modify,delete,create,attrib /etc
-m 持续监听
-r 使用递归形式监视目录
-q 减少冗余信息,只打印出需要的信息
-e 指定要监视的事件,多个时间使用逗号隔开
--timefmt 时间格式
--format 监听到的文件变化的信息
2、然后在另一个窗口中,切换到/etc/目录中,可以新建文件、删除文件,inotifywait就会有输出提示。
# cd /etc
# touch 1.txt
输出:
2019-11-26 21:53 /etc/1.txt CREATE
2019-11-26 21:53 /etc/1.txt ATTRIB
3、我们可以加上-d使 inotifywait在后台运行,再加上-o filename使输出内容保存到文件中。
# inotifywait -mrqd --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f %e' -e modify,delete,create,attrib /etc -o /tmp/file_change.log