大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-服务篇的第11篇文章
- 1. -m 监听某一个目录
- 2. 生产环境中监听创建,删除,修改事件。
- 1. 安装epel源:
- 2. 使用yum安装inotify
- 1. 内核:
- 2. 查看当前系统是否支持安装inotify软件
- 前言
- inotify 出现的原因
- 什么是inotify?
- 实验环境
- 安装inotify
- 参数讲解
- 实战举例
- 总结
上几篇文章,我们探讨了rsync的使用,今天开始我们来聊聊那些可以与rsync结合使用的工具,今天我们主要来探讨inotify。 如果你还不了解rsync相关的内容,可以点击下方连接进行了解学习:
rsync系列文章:
【Linux】循序渐进学运维-服务篇-rysnc原理
【Linux】循序渐进学运维-服务篇-rysnc安装及使用
【Linux】循序渐进学运维-服务篇-rsync配置文件
【Linux】循序渐进学运维-服务篇-rsync实战
inotify 出现的原因Rsync(remote sync)远程同步工具,通过rsync可以实现对远程服务器数据的增量备份同步,但rsync自身也有瓶颈,同步数据时,rsync采用核心算法对远程服务器的目标文件进行比对,只进行差异同步。
如果服务器的文件数量达到了百万甚至千万量级,那么文件对比将是非常耗时的。而且发生变化的往往是其中很少的一部分,这是非常低效的方式。inotify的出现,可以缓解rsync不足之处,取长补短。
什么是inotify?Inotify是一种强大的,细粒度的,异步的文件系统事件监控机制(软件),linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加,删除,修改,移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施这样监控的软件。
Inotify实际是一种事件驱动机制,它为应用程序监控文件系统事件提供了实时响应事件的机制,而无须通过诸如cron等的轮询机制来获取事件。
cron等机制不仅无法做到实时性,而且消耗大量系统资源。相比之下,inotify基于事件驱动,可以做到对事件处理的实时响应,也没有轮询造成的系统资源消耗,是非常自然的事件通知接口,也与自然世界的事件机制相符合。
由于inotify软件是Linux系统2.6内核开始支持,以前版本不支持,所以,安装前需要检查当前系统是否支持安装inotify软件。
实验环境1. 内核:[root@gaosh-1 ~]# uname -r2.6.32-696.el6.x86_642. 查看当前系统是否支持安装inotify软件
如果出现下列三个内容,表示当前系统可以安装inotify软件
[root@gaosh-1 ~]# ls -l /proc/sys/fs/inotify/总用量 0-rw-r--r-- 1 root root 0 6月 29 12:14 max_queued_events-rw-r--r-- 1 root root 0 6月 29 12:14 max_user_instances-rw-r--r-- 1 root root 0 6月 29 12:14 max_user_watches
对这三个参数的解释:
- max_user_watches:设置inotifywait或inotifywatch命令可以监视的文件数量(单进程);
- max_user_instances:设置每个用户可以运行的inotifywait或inotifywatch命令的进程数;
- max_queued_events:设置inotify实例事件(event)队列可容纳的事件数量。
[root@gaosh-1 ~]# wget -O �ɶ�����,��������/etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo2. 使用yum安装inotify
[root@gaosh-1 ~]# yum install inotify-tools -y参数讲解
[root@gaosh-1 ~]# which inotifywait/usr/bin/inotifywait
inotify的两个相关命令:
- inotifywait:在被监控的文件或目录上等待特定文件系统事件(open、close、delete等)发生,执行后处于阻塞状态,适合在shell脚本中使用; 重点掌握
- inotifywatch:收集被监视的文件系统使用度统计数据,指文件系统事件发生的次数统计
查看帮助:
[root@gaosh-1 ~]# /usr/bin/inotifywait --help
-e 指定参数事件汇总:
实战举例1. -m 监听某一个目录第一个终端:
[root@gaosh-1 ~]# mkdir iwait[root@gaosh-1 ~]# inotifywait -m iwait/Setting up watches.Watches established.
第二个终端:
进行增删改查,查看第一个终端的监控情况
[root@gaosh-1 iwait]# pwd/root/iwait
创建一个文件aaa
[root@gaosh-1 iwait]# touch aaa[root@gaosh-1 iwait]#
查看监控效果
[root@gaosh-1 ~]# inotifywait -m iwait/Setting up watches.Watches established.iwait/ CREATE aaaiwait/ OPEN aaaiwait/ ATTRIB aaaiwait/ CLOSE_WRITE,CLOSE aaa2. 生产环境中监听创建,删除,修改事件。
A终端:
[root@gaosh-1 ~]# inotifywait -mrq --timefmt '%d%m%y %H:%M' --format '%T %w%f' -e create,close_write,delete iwait/
B终端修改内容,删除文件操作
[root@gaosh-1 iwait]# echo test > aaa[root@gaosh-1 iwait]# [root@gaosh-1 iwait]# lsaaa[root@gaosh-1 iwait]# rm -rf aaa[root@gaosh-1 iwait]# [root@gaosh-1 iwait]# touch bbb
A终端查看监控结果:
[root@gaosh-1 ~]# inotifywait -mrq --timefmt '%d%m%y %H:%M' --format '%T %w%f' -e create,close_write,delete iwait/290620 13:51 iwait/aaa290620 13:51 iwait/aaa290620 13:52 iwait/bbb290620 13:52 iwait/bbb总结
本文主要探讨了inotify的部署及应用,下篇文章,我们将探讨inotify与rsync的结合使用。
我是高胜寒,一个在教培行业不忘初心的人,我们下篇文章再见
rsync系列文章:
【Linux】循序渐进学运维-服务篇-rysnc原理
【Linux】循序渐进学运维-服务篇-rysnc安装及使用
【Linux】循序渐进学运维-服务篇-rsync配置文件
【Linux】循序渐进学运维-服务篇-rsync实战
【Linux】循序渐进学运维-服务篇-inotify部署及应用