inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从 2.6.13 起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。
inotify可用于检测单个文件,也可以检测整个目录。当检测的对象是一个目录的时候,目录本身和目录里的内容都会成为检测的对象。
1.优化inotify内核参数
在/proc/sys/fs/inotify目录下有max_queued_events、max_user_instances、max_user_watches这三个文件
max_queued_events:表示调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。
max_user_instances:表示每一个用户可创建的inotify instatnces的数量上限,默认128。
max_user_watches:表示同一用户同时可以添加的watch数量
执行下面三行命令,把这三个文件的值都改大一点
echo 99999999 > /proc/sys/fs/inotify/max_queued_events
echo 99999999 > /proc/sys/fs/inotify/max_user_watches
2.安装inotify-tools
安装inotify-tools之前,先安装一下automake和libtool这两个依赖,不然编译安装inotify-tools的时候会报错。
下载inotify-tools
解压
进入解压后的目录
生成编译文件
编译
安装
3.使用inotify监控文件或目录变化
比如监控/www/wwwroot/zhiboblog/这个目录下的文件变化
如果想将监控日志输出到文件中,可以加一个--outfile
inotifywait命令用来监视需要备份的文件,若有变化则会通知。
-m 即 monitor 监视事件
-r 即递归
-q 即静默模式
--timefmt 时间格式
--format 输出格式
-e 文件事件
--outfile 变化文件输入到文件
open 打开文件
access 访问文件
modify 修改文件
delete 删除文件
create 新建文件
attrb 属性变更
以上就是inotify-tools的安装和使用方法,使用inotify可以很方便地监控文件或目录的变化。