AI智能
改变未来

【Linux】循序渐进学运维-服务篇-inotify部署及应用

大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-服务篇的第11篇文章

文章目录

  • [ul]1. -m 监听某一个目录
  • 2. 生产环境中监听创建,删除,修改事件。
  • 1. 安装epel源:
  • 2. 使用yum安装inotify
  • 1. 内核:
  • 2. 查看当前系统是否支持安装inotify软件
  • 前言
  • inotify 出现的原因
  • 什么是inotify?
  • 实验环境
  • 安装inotify
  • 参数讲解
  • 实战举例
  • 总结
  • [/ul]

    前言

    上几篇文章,我们探讨了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_64

    2. 查看当前系统是否支持安装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)队列可容纳的事件数量。

    安装inotify

    1. 安装epel源:
    [root@gaosh-1 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

    2. 使用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

    参数 作用
    r 递归查询目录
    q 只打印监控事件的信息 安静状态
    m 始终保持事件监听状态
    excluder 排除文件或者目录的时候不区分大小写
    timefmt 指定时间输出的格式
    d 后台运行
    -e 指定监控的时间,比如删除,增加和修改
    -o 输出到文件
    -s 把错误放到日志中而不是标准输出
    –format 指定输出格式
    -t 设置超时时间

    -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 aaa

    2. 生产环境中监听创建,删除,修改事件。

    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部署及应用

    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » 【Linux】循序渐进学运维-服务篇-inotify部署及应用