<转载>使用inotify-tools监控文件夹或文件的变动

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/ywd1992/article/details/106251339

文章目录

一、 前言

  1. 什么是inotify和inotify-tools
  2. 检查系统是否支持inotify
    二、安装使用inotify-tools
  3. 获取安装包
  4. 编译安装
  5. 脚本编写
  6. 使用

一、前言

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的支持
image

如果内核高于2.6.13版本,则查看系统是否支持inotify,如果可以看到如下三个文件,则代表支持
ls -lsart /proc/sys/fs/inotify
image

二、安装使用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的完整路径,如果要监控多个,一个文件一行
image

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 &

image
传一个文件speedtest-cli,然后去查看inotify.log日志,可以看到记录到的上传的完整信息
image

posted @ 2024-06-18 16:06  奋然  阅读(73)  评论(0编辑  收藏  举报