inotify是Linux内核自2.6.13起提供的文件系统事件监控机制,通过事件驱动方式高效监听文件或目录的变化,支持IN_ACCESS、IN_MODIFY、IN_CREATE等事件类型,相比轮询更节省资源;用户空间可通过inotify-tools工具(如inotifywait)实现对文件变化的实时响应,常用于日志监控、配置文件检测和自动化脚本;使用时需注意默认监控句柄数限制(可通过修改/proc/sys/fs/inotify/max_user_watches调整),仅适用于本地文件系统且不记录事件触发者。

Linux系统中,监控文件变化是一个常见需求,比如日志文件变动、配置文件被修改或代码部署同步等。实现这一功能的核心工具之一是 inotify —— 一个内核子系统,用于监听文件系统的事件,如创建、删除、修改等。
inotify 是 Linux 内核从 2.6.13 版本开始引入的一个机制,它允许应用程序监视文件或目录的事件。相比传统的轮询方式(定期检查文件是否变化),inotify 是事件驱动的,效率更高,资源消耗更少。
常见的 inotify 事件包括:
虽然 inotify 是内核提供的功能,但用户空间需要工具来使用它。最常用的工具是 inotify-tools,它提供两个命令:inotifywait 和 inotifywatch。
安装 inotify-tools:
使用 inotifywait 监控单个文件:
inotifywait -m /path/to/file.txt参数说明:
示例:监控某个目录下的所有变化
inotifywait -m -r -e modify,create,delete /var/log/输出示例:
/var/log/ MODIFY access.log表示 access.log 文件被修改。
你可以结合 shell 脚本,利用 inotifywait 做到文件一变就触发操作,比如自动重启服务、同步文件或发送通知。
示例:当配置文件变化时打印提示
#!/bin/bash
inotifywait -m -e modify /etc/myapp/config.conf |
while read path action file; do
echo "检测到 $path$file 被 $action"
# 可在此处添加 reload 命令
done
这个脚本会一直运行,每当 config.conf 被修改,就会执行 echo 操作。
inotify 功能强大,但也有一些使用上的限制:
查看当前系统 inotify 限制:
cat /proc/sys/fs/inotify/max_user_watches临时增加监听数量:
echo 16384 > /proc/sys/fs/inotify/max_user_watches永久生效需写入 /etc/sysctl.conf:
fs.inotify.max_user_watches=16384基本上就这些。通过 inotify,你可以高效地实现对关键文件和目录的实时监控,避免轮询带来的性能浪费。无论是开发调试、运维自动化还是安全审计,都是很实用的技术手段。
以上就是Linux如何监控系统文件变化_Linuxinotify文件事件监听的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号