inotifywait实时监控文件目录

一、inotify简介
inotify 是一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、创建删除、移动等操作,也可以监控文件发生的一切变化。

inotify-tools 是一个C库和一组命令行的工作提供Linux下inotify的简单接口。

inotify-tools中包含inotifywait和inotifywatch两个命令

inotifywait 命令可以用来收集有关文件访问信息,Linux发行版一般没有包含这个命令。需要安装inotify-tools,这个命令还需要将inotify支持编译入Linux内核,好在大多数Linux都在内核中启用inotify。

inotifywatch命令用于收集关于被监控的文件系统的统计数据,包括每个inotify事件发生多少次。

二、inotifywait 使用

-m  #持续监听
-r  #使用递归形式监控目录
-q  #减少冗余信息,只打印出需要的信息
-e  #指定要监控的事件,多个事件使用逗号隔开
        access  #访问,读取文件
        modify  #修改,文件内容被修改
        attrib  #属性,文件元数据被修改
        move    #移动,对文件进行移动操作 move_to  move_from
        create  #创建,生成新文件
        open    #打开,对文件进行打开操作
        close   #关闭,对文件进行关闭操作 close_write close_nowrite
        delete  #删除,文件被删除 delete_self
        unmount #卸载文件或目录的文件系统
--timefmt   #时间格式  y 年  m月  d日  H小时  M分钟
--format    #监控事件发生后的信息输出格式
    %w  #表示发生事件的目录
    %f  #表示发生事件的文件
    %e  #表示发生的事件
    %Xe #事件以“X”分隔
    %T  #使用由  --timefmt定义的时间格式
--exclude   #排除文件或目录时,大小写敏感
    # --exclude="(.*.swp)|(.*~$)|(.*.swx)"使用正则匹配排除文件
--excludei  #同 --exclude 但是不区分大小写

问题:

/usr/local/bin/inotifywait: error while loading shared libraries:libinotifytools.so.0: cannot open shared object file: No such file or directory

解决方法:ln -s /usr/local/lib/libinotifytools.so.0/usr/lib64/libinotifytools.so.0

三、inotifywatch 使用

--fromfile  #从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。
-z, --zero   #输出表格的行和列,即使元素为空
--exclude   #正则匹配需要排除的文件,大小写敏感。
--excludei   #正则匹配需要排除的文件,忽略大小写。
-r, --recursive  #监视一个目录下的所有子目录。
-t , --timeout    #设置超时时间
-e , --event      #只监听指定的事件。与inotifywait事件一致
-a , --ascending  #以指定事件升序排列。
-d , --descending #以指定事件降序排列。
#!/bin/bash

file=/documents/Others/qq_voice/tweet.wav

inotifywait -mq -e access $file | while read event

do

notify-send -i /documents/Others/pic/mm.jpg ‘主银’ ‘你有QQ消息哦~~’

done
上一篇:关于rsync+inotify-tools实时同步模式


下一篇:rsync同步数据配置。