inotify-tools的安装和使用方法,使用inotify监控文件或目录变化

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 65535 > /proc/sys/fs/inotify/max_user_instances
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的时候会报错。

yum install automake libtool -y

下载inotify-tools

wget https://github.com/inotify-tools/inotify-tools/archive/refs/tags/3.21.9.5.tar.gz

解压

tar -zxvf 3.21.9.5.tar.gz

进入解压后的目录

cd inotify-tools-3.21.9.5

生成编译文件

./autogen.sh

编译

./configure --prefix=/usr/local/inotify

安装

make && make install

3.使用inotify监控文件或目录变化

比如监控/www/wwwroot/zhiboblog/这个目录下的文件变化

/usr/local/inotify/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %w%f %e' -e close_write,modify,delete,create,attrib,move /www/wwwroot/zhiboblog/

如果想将监控日志输出到文件中,可以加一个--outfile

/usr/local/inotify/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %w%f %e' -e close_write,modify,delete,create,attrib,move /www/wwwroot/zhiboblog/ --outfile /tmp/inotify.log

inotifywait命令用来监视需要备份的文件,若有变化则会通知。

-m 即 monitor 监视事件

-r 即递归

-q 即静默模式

--timefmt 时间格式

--format 输出格式

-e 文件事件

--outfile 变化文件输入到文件

open 打开文件

access 访问文件

modify 修改文件

delete 删除文件

create 新建文件

attrb 属性变更

以上就是inotify-tools的安装和使用方法,使用inotify可以很方便地监控文件或目录的变化。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: