• 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
    
    
  • 相关阅读:
    VUE脚手架,babel转码 常用命令
    ES6那些事半功倍的新特性(一)
    vuex中怎么把‘库’中的状态对象赋值给内部对象(三种方法)
    VUE自定义指令生命周期,VUE生命周期
    判断是数组还是对象的方法
    利用cordova打包H5混合app
    webstorm皮肤外观样式快速设置,CMD的使用方法,webstorm11激活方法
    数组操作方法中的splice()和concat() 以及slice()
    Angularjs跨域
    Node.js的基础知识(一)
  • 原文地址:https://www.cnblogs.com/enumx/p/12356510.html
Copyright © 2020-2023  润新知