inotify-tools监控文件的变动情况
时间:2022-07-22
本文章向大家介绍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
- Spring Security笔记:自定义Login/Logout Filter、AuthenticationProvider、AuthenticationToken
- ASP.NET Web API 2.1支持Binary JSON(Bson)
- Spring Security笔记:自定义登录页
- 浅析 Linux 初始化 init 系统
- 如何提高Python运行效率 超实用的四种提速方法
- 如何让oracle的select强制走索引
- ActionScript3.0(AS3)中的泛型数组Vector
- 人民网评:“算法推荐”不能成为传播低俗信息的助推器
- 代码实现WordPress自动关键词keywords与描述description
- 基于Spring的简易SSO设计
- MS 的IOC容器(ObjectBuilder)?
- 自动驾驶五问
- 开放的即时通信协议Jabber
- AI技术五年内必将颠覆现有医疗领域?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux中创建新用户并赋予指定目录的相关权限
- Linux服务器下安装配置Nginx的教程
- Linux文件目录结构(小白版)
- 基于Linux中vnc配置端口号的修改方法
- Linux下安装grafana并且添加influxdb监控的方法
- 玩命学JVM:认识JVM和字节码文件
- 使用CatBoost进行不确定度估算:模型为何不确定以及如何估计不确定性水平
- 拒绝 kill -9,让 SpringBoot 优雅停机!
- SpringBoot整合Activiti7的实现代码
- Linux工具之Nethogs按进程监控网络带宽的安装部署
- 实现防重复提交和防重复点击
- Linux系统禁止root账号远程登录的命令
- 详解CentOS7 安装 MariaDB 10.2.4的方法
- linux允许端口远程访问开放端口的方法
- linux操作系统利用python实现任务管理器可视化功能