inotify-tools监控文件的变动情况

在实际的生产中,都会存在不同系统的对接问题,比如A系统将数据生产后存放到/data文件下,B系统需要监控/data文件夹下数据的变动情况,来做出调整,linux系统中inotify-tools正好可以完成系统的监控而supervise正好可以完成进程的持续监控,起到出错重启的效果。

inotify-tools

inotify-tools下载地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

上面是inotify-tools的下载地址。

  • 安装inotify-tools
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install

对于make的操作最好在root权限下进行,因为其可能会涉及到创建文件夹或文件的操作,需要对文件夹的访问权限。

  • 创建软链接
如果是64位系统
ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
  • 配置参数
echo 104857600 > /proc/sys/fs/inotify/max_user_watches
echo 'echo 104857600 > /proc/sys/fs/inotify/max_user_watches' >> /etc/rc.local 
  • 设置自启动
vi /etc/rc.local
加入下面的代码
/usr/local/bin/inotifywait -m -r -d -o/var/log/change.log --timefmt '%F %T' --format '%T %w%f %e'  -e close_write -e create /usr/local/test
其中/var/log/change.log是日志路径,/usr/local/test是监控的网站路径
reboot重启生效
  • 编写监控文件夹的脚本
#!/bin/bash
#filename watchdir.sh
path=$1
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y/%H:%M' --format '%T %w %f' -e modify,delete,create,attrib $path

脚本中命令参数的了解

inotifywait命令参数

-m是要持续监视变化。

-r使用递归形式监视目录。

-q减少冗余信息,只打印出需要的信息。

-e指定要监视的事件列表。

–timefmt是指定时间的输出格式。

–format指定文件变化的详细信息。

可以支持的文件夹的操作access 访问,读取文件。
modify 修改,文件内容被修改。
attrib 属性,文件元数据被修改。
move 移动,对文件进行移动操作。
create 创建,生成新文件
open 打开,对文件进行打开操作。
close 关闭,对文件进行关闭操作。
delete 删除,文件被删除。

  • 测试
root@hadoop:/opt/docker-sh# bash watchdir.sh /data
创建docker-sh文件夹
29/11/18/19:19 /data/ docker-sh
创建file文件
29/11/18/19:20 /data/docker-sh/ file
修该文件
29/11/18/19:20 /data/docker-sh/ file
删除文件
29/11/18/19:21 /data/docker-sh/ file

    原文作者:张晓天a
    原文地址: https://www.jianshu.com/p/77abb9bd839b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞