使用Inotify监控文件及文件夹
创作时间:
作者:
@小白创作中心
使用Inotify监控文件及文件夹
引用
CSDN
1.
https://blog.csdn.net/m1729339749/article/details/137602725
Inotify是Linux内核提供的一种文件变化通知机制,可以高效地监控文件系统的变化。本文将详细介绍如何在Linux系统中使用Inotify进行文件和目录的监控,包括环境配置、命令使用以及相关参数的设置。
一、判断内核支持Inotify
在使用Inotify之前,需要确认当前系统是否支持该功能。可以通过以下命令检查:
grep "CONFIG_INOTIFY_USER" /boot/config-$(uname -r)
如果输出内容中包含CONFIG_INOTIFY_USER=y,说明操作系统支持Inotify。
二、安装inotify-tools
inotify-tools是一个用于监控文件系统变化的工具集,包含inotifywait和inotifywatch两个主要命令。以下是安装步骤:
下载与解压缩
wget https://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz
tar zxvf inotify-tools-3.13.tar.gz
配置
cd inotify-tools-3.13
./configure --prefix=/usr/local/inotify-tools-3.13
编译安装
make && make install
配置环境变量
# 删除INOTIFY_TOOLS_HOME配置
sed -i '/INOTIFY_TOOLS_HOME/d' /etc/profile
# 添加INOTIFY_TOOLS_HOME环境变量
echo 'export INOTIFY_TOOLS_HOME=/usr/local/inotify-tools-3.13/' >> /etc/profile
# 添加inotify tools的可执行文件到PATH环境变量
echo 'export PATH=$PATH:$INOTIFY_TOOLS_HOME/bin' >> /etc/profile
# 使环境变量生效
source /etc/profile
三、inotifywait
inotifywait命令用于监控文件及文件夹,可以使用man inotifywait查看命令的帮助文档。
1. 监听
使用inotifywait监控/home文件夹下文件的变化:
# m代表的是循环监听,否则监听到后退出
# r代表的是递归监听,否则只监听指定文件夹下的变化
inotifywait -rm /home
执行命令后,会一直处于阻塞状态。在另一个终端中对/home/dev目录进行以下操作:
- 新建一个文件夹(
mkdir test) - 进入test文件夹,创建
text.txt文件(cd test && touch text.txt) - 修改
text.txt文件的内容(echo 'hello world'>> text.txt) - 查看
text.txt文件的内容(more text.txt) - 删除
text.txt文件(rm text.txt) - 进入
/home/dev目录,删除test目录(rm -r test)
可以看到监听到的日志如下:
2. 排除监听
在某些情况下,可能不想监听某个文件或文件夹的变化,可以使用--exclude排除对指定文件或文件夹的监听。
监控/home文件夹下文件的变化,但不监听/home/dev下的变化:
# m代表的是循环监听,否则监听到后退出
# r代表的是递归监听,否则只监听指定文件夹下的变化
inotifywait --exclude /home/dev -rm /home
再在/home/dev目录下执行创建文件及文件夹等操作,发现已经监听不到。另外,--exclude后面可以使用正则表达式。
四、Inotify配置
内核中有两项关于Inotify的配置:
/proc/sys/fs/inotify/max_user_instances规定了每个用户所能创建的 Inotify 实例的上限(默认是128)/proc/sys/fs/inotify/max_user_watches规定了每个Inotify实例最多能关联几个监控 (watch)(默认是8192)
1. 修改用户Inotify实例上限
将max_user_instances修改为0:
echo 0 > /proc/sys/fs/inotify/max_user_instances
再使用inotifywait命令进行监听时会失败:
测试结束后将max_user_instances再修改回128。
2. 修改Inotify关联watch上限
将max_user_watches修改为0:
echo 0 > /proc/sys/fs/inotify/max_user_watches
再使用inotifywait命令进行监听时会失败:
测试结束后将max_user_watches再修改回8192。
热门推荐
心脏不好的调理方法与注意事项
教学评一体化的五个追问
健康科普丨红斑狼疮早期筛查的“金标准”——抗核抗体(ANA)
诺奖得主的最强学习方法,快速掌握任何一门知识和技能
哪种肺腺癌最不严重?这些定期检查要重视
如何剖析股市内外盘的运行机制?这种运行机制如何影响股价趋势?
辞职后社保处理指南:如何保障个人医疗与养老金权益
结婚请柬亲戚称呼怎么写? 结婚请帖亲戚称呼大全!
星野Tomamu度假村:北海道的粉雪天堂
忍无可忍弃剧了,《漂白》剧情越看越离谱,全员演技在线也救不了
定期洗牙:口腔健康的守护者
量化宽松政策是什么意思
服用苯二氮卓类药物需谨慎:低剂量也会增加老人骨折风险
乔布斯演讲技巧深度解析:十大元素打造震撼人心的演讲
正本提单丢失后的处理流程
王安石的《登飞来峰》,诗的背后蕴含着怎样的含义?
主线热点确定:找出当天最强领涨板块
天价菜留证据的法律指南:如何有效留存证据维权
绩效考核与员工激励机制
质量控制与质量管理:如何确保产品达到最高标准?
什么是纯文本 什么是富文本
中国干细胞技术走在世界前列,干细胞将改善超3亿中老年人健康问题
揭秘MD5校验工具,如何确保文件完整性
危房改造国家补偿标准D级是什么
专家详解:姜汤治疗感冒的正确熬制方法
车厘子价格 “跳水” 背后:市场供需的深度博弈
我们还有多少石油资源?
客服工作的日常职责除了回答客户问题,还包括哪些内容
自闭症儿童不宜食用这五类食物
PPD皮试结果怎么看