linux的inotify简单介绍


inotify是什么

inotify 是一种文件变化通知机制,Linux内核2.6.13(2005/06/18)版本开始引入;

inotify仅仅是一个API,需要通过开发应用程序进行调用;

inotify-tools则是inotify的一种实现,它是一套组件,包括一个C库和几个命令行工具,这些命令行工具可用于通过命令行或脚本对某文件系统的事件进行监控;

验证Linux内核是否支持inotify支持

#检查机器内核是否支持inotify(多种方法)

#方法一:查看linux内核版本,若版本为2.6.13+,则说明内核支持inotify

$ uname -r

#方法二:查看 /usr/include/sys/inotify.h 文件是否存在,若存在,则说明内核支持inotify

$ ls -l /usr/include/sys | grep inotify.h

#方法三:查看 /proc/sys/fs/inotify 目录是否存在,且该目录是否存在以下文件;若有,则说明内核支持inotify

$ ls -l /proc/sys/fs/inotify

-rw-r--r-- 1 root root 0 Oct 9 09:36 max_queued_events

-rw-r--r-- 1 root root 0 Oct 9 09:36 max_user_instances

-rw-r--r-- 1 root root 0 Oct 9 09:36 max_user_watches

参数介绍

#注: /proc/sys/fs/inotify 目录下的文件为inotify的默认内核参数

max_queued_events 默认值:16384;

调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值得事件被丢弃,但会触发IN_Q_OVERFLOW事件;

注意:max_queued_events 是 Inotify 管理的队列的最大长度,文件系统变化越频繁,这个值就应该越大;

如果在日志中看到Event Queue Overflow,说明max_queued_events太小,需要调整参数后再次使用;

max_user_instances 默认值:128;

指定了每一个user ID可创建的inotify instatnces的数量上限;

max_user_watches 默认值:8192;

指定了每个inotify instance相关联的watches的上限(可以监控的文件或目录数目上限);

Archives