首页
运维教程
Linux基础
系统服务
系统架构
数据库
shell脚本
虚拟化
大数据
DevOps
企业案例
运维开发
python
go语言
运维安全
行业资讯
网络基础
系统安全
运维面试
学习路线
学习方法
面试题库
职场解惑
常用软件
运维软件
办公软件
书籍资源
日知录
招聘信息
读书计划
书单
关于我们
首页 运维教程Linux基础【Linux】循序渐进学运维-服务篇-inotify部署及应用

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

文章目录

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

前言

上几篇文章,我们探讨了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 -r
2.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 aaa
iwait/ OPEN aaa
iwait/ ATTRIB aaa
iwait/ 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]# ls
aaa
[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/aaa
290620 13:51 iwait/aaa
290620 13:52 iwait/bbb
290620 13:52 iwait/bbb

总结

本文主要探讨了inotify的部署及应用,下篇文章,我们将探讨inotify与rsync的结合使用。

我是高胜寒,一个在教培行业不忘初心的人,我们下篇文章再见

rsync系列文章:

【Linux】循序渐进学运维-服务篇-rysnc原理

【Linux】循序渐进学运维-服务篇-rysnc安装及使用

【Linux】循序渐进学运维-服务篇-rsync配置文件

【Linux】循序渐进学运维-服务篇-rsync实战

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

扫码关注下方公众号《极客运维之家》:

架构师群还有50个名额,可以加我微信zmkj512拉你进群

本文链接:http://www.geekyunwei.com/1889.html

网友评论comments

发表评论

邮箱地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2021 极客运维 备案号: 京ICP备2021004281号
扫二维码
扫二维码
返回顶部