安装inotify-tools,用inotifywait命令监听文件或目录的访问信息
再使用Jnotify监控系统文件改名的过程中,高并发下会有遗漏,改用Inotify, 以下为使用方法
Inotify一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化。。
inotify-tools是一个C库和一组命令行的工作提供Linux下inotify的简单接口。inotify-tools安装后会得到inotifywait
和inotifywatch
这两条命令:
- inotifywait命令可以用来收集有关文件访问信息,Linux发行版一般没有包括这个命令,需要安装inotify-tools,这个命令还需要将inotify支持编译入Linux内核,好在大多数Linux发行版都在内核中启用了inotify。
- inotifywatch命令用于收集关于被监视的文件系统的统计数据,包括每个 inotify 事件发生多少次。
开始之前需要检测系统内核是否支持inotify:
使用uname -r
命令检查Linux内核,如果低于2.6.13,就需要重新编译内核加入inotify的支持。
使用ll /proc/sys/fs/inotify
命令,是否有以下三条信息输出,如果没有表示不支持。
ll /proc/sys/fs/inotify total 0 -rw-r--r-- 1 root root 0 Jan 4 15:41 max_queued_events -rw-r--r-- 1 root root 0 Jan 4 15:41 max_user_instances -rw-r--r-- 1 root root 0 Jan 4 15:41 max_user_watches
安装inotify-tools
- inotify-tools项目地址:https://github.com/rvoicilas/inotify-tools
- inotify-tools下载地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
#CentOS release 5.8/64位: tar zxvf inotify-tools-3.14.tar.gz cd inotify-tools-3.14 ./configure make make install
其他Linux发行版安装方法可以参见:https://github.com/rvoicilas/inotify-tools/wiki#wiki-getting
inotify相关参数
inotify定义了下列的接口参数,可以用来限制inotify消耗kernel memory的大小。由于这些参数都是内存参数,因此,可以根据应用需求,实时的调节其大小:
/proc/sys/fs/inotify/max_queued_evnets
表示调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。/proc/sys/fs/inotify/max_user_instances
表示每一个real user ID可创建的inotify instatnces的数量上限。/proc/sys/fs/inotify/max_user_watches
表示每个inotify instatnces可监控的最大目录数量。如果监控的文件数目巨大,需要根据情况,适当增加此值的大小。
根据以上在32位或者64位系统都可以执行:
echo 104857600 > /proc/sys/fs/inotify/max_user_watches echo 'echo 104857600 > /proc/sys/fs/inotify/max_user_watches' >> /etc/rc.local
如果遇到以下错误:
inotifywait: error while loading shared libraries: libinotifytools.so.0: cannot open shared object file: No such file or directory
解决方法: 32位系统:ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib/libinotifytools.so.0 64位系统:ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
inotifywait命令使用
#!/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执行输出: ./watchdir.sh /data/wsdata/tools/ 04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swp 04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swx 04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swx 04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swp 04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swp 04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swp 04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swp 04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swp 04/01/13/16:35 /data/wsdata/tools/ 4913 04/01/13/16:35 /data/wsdata/tools/ 4913 04/01/13/16:35 /data/wsdata/tools/ 4913 04/01/13/16:35 /data/wsdata/tools/ j.jsp 04/01/13/16:35 /data/wsdata/tools/ j.jsp 04/01/13/16:35 /data/wsdata/tools/ j.jsp 04/01/13/16:35 /data/wsdata/tools/ j.jsp~ 04/01/13/16:35 /data/wsdata/tools/ .j.jsp.swp
inotifywait命令参数
-m
是要持续监视变化。-r
使用递归形式监视目录。-q
减少冗余信息,只打印出需要的信息。-e
指定要监视的事件列表。--timefmt
是指定时间的输出格式。--format
指定文件变化的详细信息。
可监听的事件
from http://www.1987.name/637.html
转载于:https://www.cnblogs.com/jeesezhang/p/4143003.html
安装inotify-tools,用inotifywait命令监听文件或目录的访问信息相关推荐
- Linux 用inotify监听文件和目录
日常应用中,常常会遇到以下场景,监控文件夹A,若文件夹中的B文件发生变化,则执行C命令.Linux下可以通过inotify完成该功能. 自从Linux kernel 2.6.13起,inotify以作 ...
- 使用Node.JS监听文件夹变化
使用Node.JS监听文件夹改变有许多应用场合,比如: 构建自动编绎工具 当源文件改变时,自动运行build过程,比如当你写CoffeeScript文件或SASS CSS文件时,保存之后可即时生成对应 ...
- Hutool操作和监听文件
目录 1 文件监听简单使用 1.1 WatchMonitor 1.2 内部应用 1.3 监听指定事件 1.4 监听全部事件 1.5 延迟处理监听事件 2 文件的读取 3 文件的写入 4 文件追加 5 ...
- Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇
Oracle11g安装教程.配置实例.监听.客户端程序详解_Windows篇 文章目录 Oracle11g安装教程.配置实例.监听.客户端程序详解_Windows篇 前言 一.数据库的安装前准备,前提 ...
- 在linux中使用tcpdump命令 – 监听网络流量
tcpdump命令 – 监听网络流量 tcpdump命令是一款sniffer工具,是linux上的抓包工具,嗅探器:它可以打印出所有经过网络接口的数据包的头信息. tcpdump命令工作时先要把网卡的 ...
- oracle-11g-R2监听文件配置
客户端连接oracle数据库时出现如下错误: Listener refused the connection with the following error: ORA-12514, TNS:list ...
- 监听文件变化并自动运行 npm script
监听文件变化并自动运行 npm script 软件工程师做的事情基本都是在实现自动化,比如各种业务系统是为了业务运转的自动化,部署系统是为了运维的自动化,对于开发者本身,自动化也是提升效率的关键环节, ...
- oracle11gr2配置监听,oracle-11g-R2监听文件配置
客户端连接oracle数据库时出现如下错误: Listener refused the connection with the following error: ORA-12514, TNS:list ...
- gulp构建项目(三):gulp-watch监听文件改变、新增、删除
一.gulp.watch()功能介绍 举例说明:当'./src/*.html'发生变化时,执行'html'任务,同时刷新浏览器.如下: gulp.task('watch', function(){gu ...
- oracle配置的监听文件,配置oracle监听文件
配置oracle监听文件 如果自己配置的监听文件总是出错,可以复制线面的信息进到自己配置文件中更改主机信息即可 [[email protected] admin]$ cat tnsnames.ora ...
最新文章
- Python初学者零碎基础笔记(一)
- 【H5】解决ios禁止缩放失效的方法
- Alpha 冲刺报告(3/10)
- finallshell堡垒机_用lshell+脚本实现堡垒机(跳转机)功能
- 【拓扑排序】【DP】旅行计划(luogu 1137)
- aix如何查看日志策略_aix的日志的一些操作理解
- 模块字体不生效_新版iPhone敬业签便签软件怎么将字体调大?
- java复制和上传_java文件上传复制等功能
- 湘苗培优|从入门到精通
- wps2019无法使用粘贴复制快捷键
- html 显示不可见字符,真实用! 一键清除不可见字符
- 强制修改.ko文件中的内核版本号与内核对应
- 【java毕业设计】基于java+BS的QQ屏幕截图工具设计与实现(毕业论文+程序源码)——屏幕截图工具
- 如何添加其他网段的打印机
- 电视剧《天道》观后感
- 如何申请Xilinx评估版本ip核license
- CodeCombat代码全记录(Python学习利器)--边地森林(第二章)代码4
- element-UI中el-select组件使用拼音进行模糊匹配可选择项
- 苹果电脑销量大跌40%,PC市场无战事
- 博客英语作文写作技巧_网络写作技巧
热门文章
- mysql id 不连续_MySQL中自增主键不连续之解决方案。(20131109)
- python visa模块_python – Mac OS X上的NI VISA pyVisa(Snow Leopard)
- python用正则表达式提取中文_用正则表达式从Python中的字符串中提取数字
- 双一流2020年调整时间_“双一流”调整名单预测,985大学两升一降,两校退出名校阵营...
- java提前多久显示,Java当前日期/时间比原始时间提前1小时显示
- 基于springboot+vue的汽车销售系统(前后端分离)
- java mysql数据库操作_java 操作mysql数据库
- Leetcode 207. 课程表(值得一刷的宽搜)
- 面向对象分析和设计的几个关键步骤_超市设计中不容忽视的小细节
- java基础总结06-常用api类-Arrays