首页 > 其他分享 ><转载>使用inotify-tools监控文件夹或文件的变动

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

时间:2024-06-18 16:10:10浏览次数:28  
标签:文件 inotify local 文件夹 usr 监控 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

标签:文件,inotify,local,文件夹,usr,监控,tools
From: https://www.cnblogs.com/jade23/p/18254558

相关文章

  • Windows 中的 csc 服务是指 "Client Side Caching",即客户端缓存服务。这个服务主要用
    Windows中的csc服务是指"ClientSideCaching",即客户端缓存服务。这个服务主要用于离线文件和文件夹的同步,特别是在使用“离线文件”功能时。下面是关于csc服务的一些介绍:功能:csc服务允许用户在离线状态下访问网络共享文件和文件夹。当用户连接到网络时,csc服务会自动将......
  • dwm 文件上传/打开文件夹 白屏
    问题描述及解决我的chromium和code-oss在上传文件/打开文件夹时会出现白屏的情况,即打开文件管理器时发生。因为firefox没有出现这种情况,最先以为是chromium的bug,起先以为缺少包,遂安装gtk3,gtk4,qt5-base,qt6-base,然而问题没有解决,设置默认的文件管理器也无作用。后面发现是缩......
  • linux在文件夹中查找文件内容
    linux在文件夹中查找文件内容在Linux中,可以通过以下多个途径,在文件夹中查找文件内容:1、使用grep命令:grep-r"要查找的内容"/path/to/folder-r参数表示递归地在文件夹及其子文件夹中搜索。/path/to/folder是要搜索的文件夹路径。2、使用ack命令ack"要查找的内容......
  • 开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边及循环遍历文件夹全
    今天推荐一键款本人开发的pdf转单张图片并截取没有用的白边工具一、开发背景:业务需要将一个pdf文件展示在前端显示,但是基于各种原因,放弃了h5使用插件展示原因有多个,文件资源太大加载太慢、pdf展示兼容性问题、pdf展示效果不好、pdf字体有时缺失等等,所以将项目中的协议等,全部由p......
  • 用idea导入maven在打包之后在web.xml文件找不到src/main/resources文件夹下的资源(已解
    一、产生原因这其实是因为在导入ssm项目时候src/main/resources下的配置文件打包丢失造成的二、解决办法1、在确定maven包都导入情况下,只有资源文件找不到(ps:不能修改绝对路径,否则项目跑不起来) 2、此时的resources文件夹是普通文件夹3、点击项目配置 4、因为之前他只是......
  • 尘封在文件夹中的GWAS和QTL定位的古老笔记
    longlongago,小野记录了关于重测序基因定位和GWAS相关的笔记。打开古老的文件夹,发现有些东西依然不过时,零零散散,随意发布。QTL定位策略:群体类型:作图群体,自然群体选材策略:全群个体分析,选择基因型分析,混合分组分析优点:适合稀有基因研究;群体可控,目的性和结果预期性强缺点:需......
  • 【上传云】第一步:本地读取文件夹下的文件内容到数据库中
    背景:本地有一些文件,需要上传到云端这里先介绍第一步:将本地文件夹下的所有文件路径跟文件名都读取到数据库中,为下一步的上传做铺垫所需:并不需要上传所有格式的文件,故在此步骤里做过滤操作FileFilterzipFilter=pathname->!pathname.getName().endsWith("zxx");传文......
  • QT6安装Android SDK出现"Android SDK Command-line Tools run"出错解决办法
    前言以下提供的方案,是在QT6,Androidstudio均有安装的前提下,安装完javaJDK,在设置安卓SDK时出现的问题,具体表现如标题所言本文目的是以做笔记学习,交流为主,推荐参考参考链接参考链接https://blog.csdn.net/yy_xzz/article/details/132135255操作流程确定NDK路径......
  • PHP 对一个文件夹中的所有歌曲文件移动到对应的歌手目录中
    move_music_to_singer_folder.php<?php/***对一个文件夹中的所有歌曲文件移动到对应的歌手目录中,歌手按照拼音首字母作为第一级目录.*同时,如果歌手和歌曲中间有空格,则去除空格.*例如:"周杰伦-稻香.mp3"移动到"Z/周杰伦/周杰伦-稻香.mp3"*/try{requi......
  • SpringBoot集成devtools实现热部署调试
    SpringBoot集成devtools实现热部署调试简述参考多篇网上文章终于实现热部署,中间出现过更改的文件已加载,但是并未自动重启的情况。由于判断不出哪些操作时多余的,记录了所有修改项操作步骤1.pom文件中增加依赖<dependency><groupId>org.springframework.b......