inotify异步监控机制

1.inotify 简介

  • inotify是一种强大的,细粒度的,异步的文件系统事件监控机制(软件),linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加,删除,修改,移动等各种事件。
  • inotify实际是一种事件驱动机制,它为应用程序监控文件系统事件提供了实时响应事件的机制,而无须通过诸如cron等的轮询机制来获取事件。cron等机制不仅无法做到实时性,而且消耗大量系统资源。相比之下,inotify基于事件驱动,可以做到对事件处理的实时响应,也没有轮询造成的系统资源消耗,是非常自然的事件通知接口,也与自然世界的事件机制相符合。
  • inotify 的实现有几款软件:inotify-tools、sersync、lsyncd

注:sersync软件实际上就是在 inotify软件基础上进行开发的,功能要更加强大些 ,多了定时重传机制,过滤机制了提供接口做 CDN,支持多线程橾作。是国人周洋在金山公司开发的。

2.部署 inotify 软件

是否支持:
~]# uname -r		#2.6.13以上内核版本
3.10.0-957.el7.x86_64

~]# ll /proc/sys/fs/inotify/	#在没安装inotify软件之前,应该有这三个文件
total 0
-rw-r--r-- 1 root root 0 Sep 10 22:38 max_queued_events
-rw-r--r-- 1 root root 0 Sep 10 22:38 max_user_instances
-rw-r--r-- 1 root root 0 Sep 10 22:38 max_user_watches
文件说明:
文件 默认值 作用说明
max_queued_events 8192 设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
max_user_instances 128 设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
max_user_watches 16384 设置inotify实例事件(event)队列可容纳的事件数量
安装inotify-tools:
~]# rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
~]# yum install -y inotify-tools	#依赖于epel源
inotify-tools提供了两个命令行工具:
~]# rpm -ql inotify-tools | grep /bin
/usr/bin/inotifywait
/usr/bin/inotifywatch

inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open,close,delete等)发生,执行后处于阻塞状态,适合shell脚本中使用。
inotifywatch: 用于收集文件系统的统计数据,例如发生了多少次inotify事件,某文件被访问了多少次等等,一般用不上。

2.1 inotifywait 命令参数解析

基础参数:
参数 含义
-m, --monitor(重要参数) 始终保持事件监听。
-d, --daemon 以守护进程运行
-r, --recursive(重要参数) 递归监控目录数据信息变化
-o, --outfile 打印事件到文件中,相当于标准正确输出
-s, --syslog 发送错误到syslog相当于标准错误输出
-q, --quiet(重要参数) 输出信息少(只打印事件信息)
–exclude <pattern> 排除文件或目录
–excludei <pattern> 排除文件或目录时,不区分大小写
–timefmt <fmt>(重要参数) 指定时间输出格式
–format <fmt>(重要参数) 打印使用指定的输出类似格式字符串;即实际监控输出内容
-e, --event(重要参数) (重要参数)指定监听指定的事件,如果省略,表示所有事件都进行监听
inotifywait -e [参数] 可指定事件类型:
事件名称 事件说明
access 文件或目录内容被读取
modify 文件或目录内容被写入
attrib 文件或目录属性改变
close_write(重要参数) 文件或目录关闭,在写入模式打开之后关闭的。
close_nowrite
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值