在 Ubuntu(以及其它 Linux 发行版)中,inotify(inode notify)是 Linux 内核提供的一种文件系统事件监控机制,用来“监听”文件或目录发生的变化。
inotify 可以让你实时知道:某个文件或目录什么时候被创建、修改、删除、重命名等。
常见事件包括:
IN_MODIFY:文件被修改IN_CREATE:在目录中创建新文件IN_DELETE:文件被删除IN_MOVED_FROM / IN_MOVED_TO:文件被移动IN_ATTRIB:文件属性变化(如权限、时间戳)IN_OPEN / IN_CLOSE:文件被打开 / 关闭典型使用场景:
rsync + inotify)inotifywait最常用的用户态工具,来自 inotify-tools
安装:
sudo apt update
sudo apt install inotify-tools
示例:
inotifywait -m /var/log
监控 /var/log 目录中所有变化。
watchdog、pyinotifychokidarfsnotifyinotify_init(), inotify_add_watch()Ubuntu 中 inotify 有数量限制,常见问题:
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
inotify 是 Ubuntu/Linux 下用来“实时监听文件系统变化”的内核机制,是很多自动化工具和开发环境的基础。
如果你是想:
Too many open files 类错误可以告诉我你的使用场景,我可以给你更具体的示例。