使用inotify-tools监控文件夹或文件的变动

一、前言

1、什么是inotify和inotify-tools

Inotify是一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化。

inotify-tools包括一个C库和一组命令行工具,可在命令行下提供对文件系统事件的监控。inotify-tools安装后会得到inotifywait和inotifywatch这两条命令:

inotifywait命令可以用来收集有关文件访问信息,Linux发行版一般没有包括这个命令,需要安装inotify-tools,这个命令还需要将inotify支持编译入Linux内核,好在大多数Linux发行版都在内核中启用了inotify。

inotifywatch命令用于收集关于被监视的文件系统的统计数据,包括每个 inotify 事件发生多少次。

2、检查系统是否支持inotify

Linux内核从2.6.13开始引入了inotify机制,所以我们要检查系统内核是否在2.6.13之上,如果低于这个版本,就需要重新编译内核加入inotify的支持
在这里插入图片描述
如果内核高于2.6.13版本,则查看系统是否支持inotify,如果可以看到如下三个文件,则代表支持

ls -lsart /proc/sys/fs/inotify

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pGm3QQfA-1590028366909)(D17E6909197E48179AFEE5FA7F957922)]

二、安装使用inotify-tools

1、获取安装包

https://github.com/inotify-tools/inotify-tools

2、编译安装

tar -xvf inotify-tools-3.20.2.2.tar.gz
cd inotify-tools-3.20.2.2

./configure --prefix=/usr/local/inotify
make && make install

3、脚本编写

创建监控脚本目录、脚本、被监控文件或目录清单文件

mkdir -p /usr/local/inotify/shell && touch /usr/local/inotify/shell/{watch.sh,file}

编写监控脚本,比如要监控root目录,并将监控到的这个目录下的所有变化都记录到一个名为inotify.log的文件中,清单文件file中填写/root的完整路径,如果要监控多个,一个文件一行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U7jH8Z1M-1590028366912)(FEB1BEBC57DE40958048DDFB7AF621FC)]

vim /usr/local/inotify/shell/watch.sh
#!/bin/bash
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%y-%m-%d %H:%M' --format '%T %w%f %e' -e modify,delete,create,attrib,move,open --outfile '/usr/local/inotify/shell/inotify.log' --fromfile '/usr/local/inotify/shell/file'
  • 参数解释:
–timefmt 时间格式

–format 输出格式

-e 定义监控的事件,可用参数:
    open 打开文件
    modify 修改文件
    delete 删除文件
    create 新建文件
    attrib 属性变更
    move 移动文件

–outfile 输出到一个文件

–fromfile 从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头

4、使用

启动监控脚本

cd /usr/local/inotify/shell/

chmod +x watch.sh

./watch.sh &

对被监控的root目录进行一个操作,比如我上传一个文件speedtest-cli,然后去查看inotify.log日志,可以看到记录到的上传的完整信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t94pjjuX-1590028366916)(58244B96F2BD4EF9B89CA464F27D6CF8)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咖啡那么浓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值