使用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。
热门推荐
从休息到饮食:四种方法有效缓解孕妇晨吐
晨起发现吐血丝,这样应对最安全
北江畔开渔季:三水芦苞以“美食+”模式激活水经济
家庭电路安全攻略:从配电箱配置到施工细节
射洪桃花山:遂宁最大桃林景区,设施完备
一文读懂断路器与漏电保护器:从结构原理到实际应用
空气开关更换指南:拆装步骤与安全要点
家庭用电安全:空气开关选购与安装要点详解
四川遂宁:观音文化和舍得精神的旅游胜地
四川遂宁广德寺:千年古刹里的建筑瑰宝与文化传承
四川遂宁:一座博物馆里的宋瓷传奇,一片荷花海中的自然奇观
镜像宇宙:揭秘世界起源的新视角
古希腊哲学家的世界起源之争:从泰勒斯到巴门尼德
改名后再也不会下错站的高铁站,赶快了解最新名字!
武夷山至张家界最新高铁出行时间表
从武夷山到贵州青岩古镇的旅行社路线指南
灵芝孢子粉:养生新宠还是市场泡沫?
研究发现最大霸王龙可能重15吨,远超现有化石记录
从假设到现实:恐龙复生的科学困境与生态隐忧
遂宁热凉粉:豌豆淀粉制成,热着吃才解暑
三磷酸腺苷二钠片的作用与使用注意事项
胆汁酸水平异常升高危害多,四类食物助调节
最新研究:胆汁酸受体或成糖尿病性心肌病治疗新靶点
研究发现胆汁酸可调节糖脂代谢,或为糖尿病治疗带来新希望
FXR和TGR5双靶点激动剂等胆汁酸药物研发取得重要进展
契诃夫的萨哈林之旅:一部改变写作方式的民族志
契诃夫短篇小说为何历久弥新?
契诃夫的“贫穷但心态好”:一位文学大师的生活智慧
日照到淄博自驾游打卡最美景点
日照到淄博自驾游攻略:265公里全程指南,避坑要点全解析