在 Debian(以及所有 Linux 系统)中,inotify 是 Linux 内核提供的一种文件系统事件监控机制,全称是 inotify (inode notify)。
inotify 是 Linux 内核(2.6.13+)引入的一种机制,用于:
实时监控文件或目录的变化
应用程序可以通过 inotify 无需轮询(poll) 就能知道文件是否被:
常见事件示例:
| 事件 | 含义 |
|---|---|
IN_CREATE |
文件/目录被创建 |
IN_DELETE |
文件/目录被删除 |
IN_MODIFY |
文件内容被修改 |
IN_ATTRIB |
文件属性变化(权限、时间等) |
IN_MOVED_FROM |
文件被移出目录 |
IN_MOVED_TO |
文件被移入目录 |
IN_OPEN |
文件被打开 |
IN_CLOSE_WRITE |
可写文件被关闭 |
日志文件变化 → 自动分析/报警
例如:
rsync + inotifysyncthinglsyncduname -r
(内核 ≥ 2.6.13 即可)
inotify-toolssudo apt update
sudo apt install inotify-tools
inotifywait -m /var/www
输出示例:
/var/www/ CREATE index.html
/var/www/ MODIFY index.html
inotify_init()
inotify_add_watch()
read()
pyinotify、watchdogfsnotifynotify❌ 不能监控 NFS、FUSE(部分)
cat /proc/sys/fs/inotify/max_user_watches
临时修改:
sudo sysctl fs.inotify.max_user_watches=524288
永久修改:
echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
需要程序自己递归添加 watch
inotify 是 Debian/Linux 下用于“实时监听文件和目录变化”的内核机制,常用于监控、同步、自动化和运维场景。
如果你愿意,我可以:
你想看哪方面?