0

0

LINUX下如何使用inotify监控文件系统事件_实现文件变化的实时告警

冰火之心

冰火之心

发布时间:2025-12-03 09:11:02

|

508人浏览过

|

来源于php中文网

原创

首先确认内核支持inotify功能,通过grep CONFIG_INOTIFY_USER /boot/config-$(uname -r)检查是否启用;接着安装inotify-tools工具集,使用sudo apt update和sudo apt install inotify-tools完成安装并验证;然后用inotifywait命令持续监控指定目录的文件变化事件;再结合shell脚本实现事件触发后的告警通知,将信息写入日志;最后可使用inotifywatch统计文件访问频率,获取操作行为汇总。

linux下如何使用inotify监控文件系统事件_实现文件变化的实时告警

如果您希望在LINUX系统中实时监控文件或目录的变化,并在发生修改、创建、删除等操作时立即获得通知,可以利用inotify机制实现对文件系统事件的捕捉。以下是具体实施步骤:

本文运行环境:Dell XPS 13,Ubuntu 22.04

一、确认内核支持inotify功能

inotify是Linux内核提供的一个子系统,用于监控文件系统事件。在使用之前需要确保当前系统内核已启用该功能。

1、打开终端,执行命令 grep CONFIG_INOTIFY_USER /boot/config-$(uname -r) 检查配置项是否存在且设置为y。

2、如果返回结果为 CONFIG_INOTIFY_USER=y,则表示系统支持inotify;若无输出或值为n,则需更换内核或启用该选项。

二、安装inotify-tools工具

inotify-tools提供了一组用户态命令行工具,便于直接使用inotify接口进行监控,无需编写C代码。

1、更新软件包索引:sudo apt update

2、安装inotify-tools:sudo apt install inotify-tools

3、验证安装是否成功,运行 inotifywait --helpinotifywatch --help 查看帮助信息。

三、使用inotifywait监控指定目录

inotifywait是一个阻塞式工具,能够监听单次或多轮文件系统事件,适用于脚本中触发响应动作。

1、创建一个待监控的测试目录:mkdir ~/test_monitor

2、启动监控命令:inotifywait -m -e create,delete,modify,move ~/test_monitor,其中-m表示持续监控模式。

3、在另一个终端中对 ~/test_monitor 目录执行如新建文件、删除文件等操作,观察第一个终端输出的实时事件记录。

四、结合shell脚本实现告警通知

通过将inotifywait与自定义脚本结合,可以在检测到特定事件时执行告警逻辑,例如发送日志、调用通知接口等。

情感家园企业站5.0 多语言多风格版
情感家园企业站5.0 多语言多风格版

一套面向小企业用户的企业网站程序!功能简单,操作简单。实现了小企业网站的很多实用的功能,如文章新闻模块、图片展示、产品列表以及小型的下载功能,还同时增加了邮件订阅等相应模块。公告,友情链接等这些通用功能本程序也同样都集成了!同时本程序引入了模块功能,只要在系统默认模板上创建模块,可以在任何一个语言环境(或任意风格)的适当位置进行使用!

下载

1、编写脚本文件:nano ~/monitor_script.sh,输入以下内容:

#!/bin/bash

inotifywait -m -e create,delete,modify,move --format '%T %w%f %e' --timefmt '%Y-%m-%d %H:%M:%S' ~/test_monitor | while read file event; do

  echo "ALERT: $event was $file" >> /tmp/fs_alert.log

  logger "FileSystem Alert: $event on $file"

done

2、保存后赋予执行权限:chmod +x ~/monitor_script.sh

3、后台运行脚本:nohup ~/monitor_script.sh &,此时任何变更都会被记录并触发系统日志写入。

五、使用inotifywatch统计文件访问频率

inotifywatch用于收集被监控文件系统的统计数据,如读取、写入、访问次数等,适合分析行为模式。

1、停止其他监控进程,确保目标目录处于空闲状态。

2、启动统计监控:inotifywatch -v -e access,modify,create,delete -t 60 -r ~/test_monitor,表示递归监控60秒。

3、在另一终端对目录进行若干操作,等待计时结束后查看屏幕输出的汇总报告,包括每个事件类型的触发次数。

相关专题

更多
while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

89

2023.09.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

618

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

430

2024.06.27

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

618

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

430

2024.06.27

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1023

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

66

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

429

2025.12.29

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

65

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.8万人学习

【web前端】Node.js快速入门
【web前端】Node.js快速入门

共16课时 | 2万人学习

ThinkPHP6.x 微实战--十天技能课堂
ThinkPHP6.x 微实战--十天技能课堂

共26课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号