声明:博主使用的是CentOS6.9的系统

参考资料:

https://github.com/rvoicilas/inotify-tools/wiki
http://www.ibm.com/developerworks/cn/linux/l-inotifynew/
inotify--Linux .6内核中的文件系统变化通知机制

参考资料

安装inotify须知

首先,在安装inotify软件之前一定要确认系统中,必须要存在的三个文件

[root@backup ~]# ll /proc/sys/fs/inotify/
total
-rw-r--r-- root root Oct : max_queued_events
-rw-r--r-- root root Oct : max_user_instances
-rw-r--r-- root root Oct : max_user_watches
max_user_watches ----默认数值8192,设置inotifywait和inotifywatch命令可以监控的文件数量(单进程情况)
max_user_instances ----默认数值128,设置每个用户可以运行的inotifywait和inotifywatch命令的进程数
max_queued_events ----默认数值16384,设置inotify实例事件,队列可容纳的事件数量 安装前的三个重要文件

须知文件

具体想要知道三个文件的作用可以使用man帮助查看

inotify软件主要工具命令

—共安装了 2个工具(命令),即inotifywait和inotifywatch
inotifywait : 在被监控的文件或目录上等待特定文件系统事件(open close delete等)发生,执行后处于阻塞状态,适合在shell脚本中使用
inotifywatch : 收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计。
说明:yum安装后可以直接使用,如栗编译安装需要进入到相应软件目录的bin目录下使用
#命令man手册说明
# man inotifywait inotifywait - wait for changes to files using inotify
使用inotify进行监控,等待产生变化的文件信息
# man inotifywatch inotifywatch - gather filesystem access statistics using inotify
使用inotify进行监控,收集文件系统访问统计信息 inotify两个主要命令

主要命令

相关参数

命令参数

参数说明

-m|--montitor

(重要参数)

始终保持事件监听状态

-d|--daemon

类似与-m,只是将命令运行在后台

-r

(重要参数)

递归监控目录数据信息变化

-o|--outfile<file>

打印事件到文件中,相当于标准输出

-s|--syslog

发送错误到syslog相当于错误输出

-q|--quiet

(重要参数)

输出少量信息(只打印事件信息)

--excludei<pattern>

(重要参数)

排除文件或目录    i不区分大小写

--timefmt<fmt>

(重要参数)

指定时间输出格式

--format<fmt>

打印使用指定的输出类似格式字符串;即实际监控输出的内容

-e

(重要参数)

指定监听指定的事件,省略不加,表示所有事件都监听

--timefmt<fmt>可用参数

命令参数

参数说明

%d (重要参数)

每月的第几天,显示信息为十进制数(范围是01-31)

%m (重要参数)

显示月份,显示信息为十进制数(范围是01-12)

%M

显示分钟,显示信息为十进制数(范围是00-59)

%y (重要参数)

年份信息,显示信息为十进制数,并且没有世纪信息

%Y

年份信息,显示信息为十进制数,并且包含世纪信息

%H

小时信息,显示信息为十进制数,使用24小时制(范围是00-23)

说明:以上信息可以通过man strftime 信息获取

--format<fmt>可用参数

命令参数

参数说明

%w (重要参数)

事件出现时,监控文件或目录的名称信息

%f (重要参数)

事件出现时,将显示监控目录下触发事件的文件或目录信息,否则为空。

%e (重要参数)

显示发生的事件信息,不同的事件信息用逗号进行分隔

%Xe

显示发生的事件信息,不同的事件信息用X进行分隔,可以修改X为指定分隔符

%T (重要参数)

这个格式是通过strftime函数进行匹配时间格式信息的

说明:以上信息可以通过man inotifywait信息中,查询-format参数进行获取得知

监控中事件说明

事件名称

事件说明

access

文件或目录内容被读取

modify

文件或目录内容被写入

attrib

文件或目录属性改变

close_write

(重要参数)

文件或目录关闭,在写入模式打开之后关闭的。

close_nowrite

文件或目录关闭,在只读模式打开之后关闭的

close

文件或目录关闭,不管读或是写模式

open

文件或目录被打开

moved_to

文件或目录被移动到监控的目录中

moved_from

文件或目录被移动出监控的目录中

move

(重要参数)

文件或目录不管移动到或是移动出监控目录都触发事件

create

(重要参数)

文件或目录创建在监控的目录中

delete

(重要参数)

文件或目录被删除在监控的目录中

delete_self

文件或目录被删除

unmount

文件系统包含的文件或目录不能卸载

重要监控事件参数汇总表

重要事件

包含事件

备注说明

close

close_write

文件或目录关闭,不管读或是写模式即包含写关闭与读关闭

close_nowrite

close_write

create

包含文件创建事件,但不包含目录创建事件

move

moved_to

文件或目录不管移动到或是移动出监控目录都触发事件即包含信息移入或移出监控目录事件

moved_from

重要参数汇总:根据以上说明,在实际使用时,只要监控以下事件即可

create 创建、 delete 删除、 moved_to 移入、 close_write 修改

inotify软件部署

在安装inotify之前首先要确认rsync服务是否安装部署好

inotify的安装

[root@nfs01 data]# yum install -y inotify-tools
[root@nfs01 data]# rpm -ql inotify-tools
/usr/bin/inotifywait
/usr/bin/inotifywatch

insatll inotify

安装完成后,进行监控测试

使用的测试命令:

inotifywait -mr  /data/  --format "%w%f 事件信息: %e" -e create,delete,moved_to,close_write

创建文件监控事件(create):

/data/ CREATE erlianzhang.txt
/data/ OPEN erlianzhang.txt
/data/ ATTRIB erlianzhang.txt
/data/ CLOSE_WRITE,CLOSE erlianzhang.txt

创建文件的事件显示

创建目录监控事件(create):

/data/ CREATE,ISDIR 

删除事件(delete):

/data/o1.txt 事件信息: DELETE

修改事件(close_write):

/data/oldgirl.txt    事件信息: CLOSE_WRITE@CLOSE
/data/.oldgirl.txt.swx 事件信息: CLOSE_WRITE@CLOSE
/data/.oldgirl.txt.swx 事件信息: DELETE
/data/.oldgirl.txt.swp 事件信息: CLOSE_WRITE@CLOSE
/data/.oldgirl.txt.swp 事件信息: DELETE
/data/.oldgirl.txt.swp 事件信息: CLOSE_WRITE@CLOSE
/data/.oldgirl.txt.swp 事件信息: DELETE

修改的事件显示

移动事件(move):

移动进来
/data/hosts 事件信息: MOVED_TO
移动出去
/data/hosts 事件信息: MOVED_FROM

移动的事件显示

利用脚本实现简单的实时同步

使用的命令:

rsync服务: rsync -az /data/ rsync_backup@172.16.1.41::nfsbackup --password-file=/etc/rsync.password

inotify服务:inotifywait -mrq /data --format "%w%f" -e create,delete,moved_to,close_write
#!/bin/bash

inotifywait -mrq /data --format "%w%f" -e create,delete,moved_to,close_write|while read line
do
rsync -az --delete /data/ rsync_backup@172.16.1.41::nfsbackup --password-file=/etc/rsync.password
done

脚本

此脚本太过简单,想要让其在后台运行可以使用screen、&等方式。

博主能力有限,如果还想要更丰富的功能需要自己完善脚本

inotify优点

监控文件系统事件变化,通过同步工具实现时数据同步

inotify缺点

  • 并发如果大于200个文件(4-100 k ),同步就会有延迟
  • 前面写的脚本,每次都是全部推送一次,但确实是増量的。也可以只同步变化的文件,不变化的不理。
  • 监控到事件后,请用rsync同步是单线程的(加&并发),sersync是多线程同步。

如果拿inotify与sersync相比,博主推荐使用sersync

不好的地方请大家多多提议

Linux中inotify软件部署及参数事件演示的更多相关文章

  1. inotify软件部署及实时同步

    声明:博主使用的是CentOS6.9的系统 参考资料: https://github.com/rvoicilas/inotify-tools/wiki http://www.ibm.com/devel ...

  2. Linux中kettle自动化部署脚本

    自己写的一个自动化在Linux中部署kettle的脚本,包括一些遇到的问题在脚本中都有涉及. kettle是官网最新版本pdi-ce-6.1.0.1-196.zip 目前最新版本下载地址:https: ...

  3. linux中查看软件文件安装路径

    在linux中文件与软件一般都是安装在到/usr/share和/usr/local中了,如果我们需要查看软件安装路径linux为我们提供了查看命令,whereis 就可以帮我查找文件安装路径在哪里了 ...

  4. 查看linux中swap内存的相关参数

    内容主要来源于:linux的内存回收和交换 各项命令查看的linux环境是:Linux SUSE-33 2.6.32.12-0.7-defaul zone? 内存管理的相关逻辑都是以zone为单位的, ...

  5. linux中使用docker-compose部署软件配置分享

    本篇将分享一些 docker-compose 的配置,可参考其总结自己的一套基于docker的开发/生产环境配置. 安装docker及docker-compose install docker cur ...

  6. linux中安装软件,查看、卸载已安装软件方法

    各种主流Linux发行版都采用了某种形式的包管理系统(PMS)来控制软件和库的安装. 软件包存储在服务器上,可以利用本地Linux系统上的PMS工具通过互联网访问.这些服务器称为仓库. 由于Linux ...

  7. linux中安装软件的集中方法

    一.rpm包安装方式步骤: 引用:1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录:2.打开一个终端,su -成root用户:3.cd soft.version.rpm所 ...

  8. Linux 中安装软件报缺少共享库文件的错误

    linux 安装一些如软件 或者相关的模块时,经常报出缺少一些依赖包的 libxxx.so等的共享库文件 首先找到 该共享库文件 然后查看/etc/ld.so.conf 这个文件记录了编译时使用的动态 ...

  9. `ll/sc` 指令在`linux`中的软件实现

    load-link与store-conditional (LL/SC)是一对用于并发同步访问内存的CPU指令.Load-link返回内存位置处的当前值,随后的store-conditional在该内存 ...

随机推荐

  1. Alpha冲刺 - (6/10)

    Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 - 过去两天完成了哪些任务 1. 基于ssm框架的前后端交互 ...

  2. 2-postman批量执行接口

    1.postman环境设置与使用 1)点击设置,添加按钮 2)填写环境名称,参数 3)切换环境 4)使用环境变量,使用格式为:{{变量名}} 2.postman批量执行接口 1)选择要执行的文件夹,点 ...

  3. 背水一战 Windows 10 (73) - 控件(控件基类): UIElement - 拖放的基本应用, 手动开启 UIElement 的拖放操作

    [源码下载] 背水一战 Windows 10 (73) - 控件(控件基类): UIElement - 拖放的基本应用, 手动开启 UIElement 的拖放操作 作者:webabcd 介绍背水一战 ...

  4. liunx----配置搜狗输入法

    话不多说直接看步骤 * 系统版本: ubuntu 18.04.1 // 查看命令为: # cat /etc/issue 1. 先查看当前系统是否存在 fcitx 框架: # dpkg -l | gre ...

  5. Android精通之OrmLite数据库框架,Picasso框架,Okio框架,OKHttp框架

    版权声明:未经博主允许不得转载 OrmLite基础知识 什么是OrmLite框架,在我没用这个框架时,不知道它有多好,用了才知道很方便哦,为了提供开发效率,Android开发者需要懂得运行多种框架进行 ...

  6. Spring boot 配置文件参数映射到配置类属性

    [参考文章]:SpringBoot之@EnableConfigurationProperties分析 [参考文章]:在Spring Boot中使用 @ConfigurationProperties 注 ...

  7. MySQL程序端启动密码错误解决方法

    MySQL程序端启动密码错误解决方法 一般启动MySQL程序端,都是用mysql -uroot -p命令,当然前提是你的环境变量已经配好了. 为了连接服务器,当调用mysql时,通常需要提供一个MyS ...

  8. Pycharm 连接Linux 远程开发

    Pycharm 连接Linux 远程开发 在Liunx上安装python3.6(Ubuntu16) 下载Python-3.6.4.tgz 解压 tar -xzvf Python-3.6.4.tgz 进 ...

  9. C语言函数部分

    一.变量的作用域 1.概念:变量起作用的范围. 2.局部变量与全局变量: ①局部变量: 概念:在函数内部或某个控制块的内部定义的变量(理解“局部”) 作用域:函数内部 作用:增强了函数模块的独立性 ② ...

  10. 获取CPU ID--查看CPU数量/核数

    Ubuntu 获取CPU序列号或者主板序列号 CPU ID 代码: sudo dmidecode -t 4 | grep ID ID: 54 06 05 00 FF FB 8B 0F 主板序列号 代码 ...