Linux利用inotify-tools的inotifywait实现:当文件夹内容改变时自动执行一段脚本
2013-09-08 20:51
453 查看
当我在建一个rpm包管理服务器时,里面有个这样的要求,要求当有新的rpm存入指定目录时,自动执行一段脚本去对这个rpm包进行检测。
这里利用了inotify-tools的inotifywait的模块,里面有个事件处理的参数-e,见它的手册。
我的代码如下:
我这里是只检测是不是有rpm变动,你可以修改代码里的PATTERN变量内容,就可以检测任何文件!如果你要检测任何文件,你可以把PATTERN设置为“*”
我的执行脚本放在action.sh里
这里利用了inotify-tools的inotifywait的模块,里面有个事件处理的参数-e,见它的手册。
我的代码如下:
#/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里
相关文章推荐
- Linux基础之-利用shell脚本实现自动监控系统服务
- Linux下执行命令时利用脚本自动输入密码
- linux之间通过rsync+inotify-tools实现自动实时备份
- 一个简单的利用ini配置文件以及用户输入的交互进行文件夹内容拷贝的批处理文件脚本的实现
- linux下自动安装keepalived、inotify-tools并检测是否安装成功脚本
- Linux(7) 常用命令扩展 改变用户环境变量 (可以实现登陆就执行shell脚本)
- Andorid利用sserver/runtime实现java执行linux程序或脚本
- [置顶] Linux下用expect实现ssh自动登录并执行脚本
- 利用PHP和crontab命令作Linux自动执行脚本
- 利用计划任务和VBS脚本实现自动WEB共享文件夹里的文件
- Linux基础之-利用shell脚本实现自动监控系统服务
- 利用计划任务和VBS脚本实现自动WEB共享文件夹里的文件
- 利用计划任务和VBS脚本实现自动WEB共享文件夹里的文件
- linux环境在tomcat启动或者停止后执行shell脚本,脚本内容备份图片文件夹
- linux:通过bash和存储过程实现数据库操作(分享一段脚本)
- 利用脚本动态改变链接的href,实现动态打开新页面
- 利用kickstart实现pxe自动安装linux
- 一段脚本实现自动备份并保存最近几天的SQL数据库
- Linux使用Shell脚本实现ftp的自动上传下载
- shell脚本实现linux下自动安装Oracle10g