网站地图    收藏   

主页 > 系统 > linux系统 >

Linux利用inotify-tools的inotifywait实现:当文件夹内容

来源:自学PHP网    时间:2015-04-14 10:28 作者: 阅读:

[导读] Linux利用inotify-tools的inotifywait实现:当文件夹内容改变时自动执行一段脚本当我在建一个rpm包管理服务器时,里面有个这样的要求,要求当有新的rpm存入指定目录时,自动执行一段脚本去...

Linux利用inotify-tools的inotifywait实现:当文件夹内容改变时自动执行一段脚本
 
当我在建一个rpm包管理服务器时,里面有个这样的要求,要求当有新的rpm存入指定目录时,自动执行一段脚本去对这个rpm包进行检测。
 
这里利用了inotify-tools的inotifywait的模块,里面有个事件处理的参数-e,见它的手册。
 
我的代码如下:
 
[python] 
#/bin/bash  
################################################################  
#  automatically run a script(action.sh) when the contents  
#     of a directory (${EVENTPATH}) changed.  
#  pls. install the inotify-tools-3.13-1.el4.rf.i386.rpm module  
#       before use this scripts  
#  Aborn Jiang (aborn.jiang@gmail.com)  
#  Sep.8, 2013  
################################################################  
  
EVENTPATH="."  
MSG=".inotifymsg"  
PATTERN=".rpm$"          # only when the rpm files changed.  
while inotifywait -e modify -e create -e delete -e moved_to -e moved_from \  
                   ${EVENTPATH} 1>${EVENTPATH}/${MSG} 2>/dev/null;  
do  
        FILE=`cat $EVENTPATH/${MSG} |egrep ${PATTERN} | awk '{print $3}' `  
        ACTION=`cat $EVENTPATH/${MSG} |egrep ${PATTERN} | awk '{print $2}' `  
        [ ! -z ${FILE} ] && \  
        echo "in the directory ${EVENTPATH}, the file: ${FILE} modified,  action:${ACTION} " && \  
        ./action.sh  
done  
 
我这里是只检测是不是有rpm变动,你可以修改代码里的PATTERN变量内容,就可以检测任何文件!如果你要检测任何文件,你可以把PATTERN设置为“*”
我的执行脚本放在action.sh里
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论