inotify持续精确触发事件问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
gzbao9999
帖子: 627
注册时间: 2008-11-08 18:34

inotify持续精确触发事件问题

#1

帖子 gzbao9999 » 2010-08-18 15:16

写perl程序玩
每次都要chmod a+x xxx.pl实在恶心

代码: 全选

apt-get install inotify-tools
多出来两个工具
inotifywait inotifywatch

开一个终端执行监控

代码: 全选

while inotifywait -e create,moved_to -r --format '%:e %f' ~/perl;do chmod -R a+x ~/perl;done
这样每次其他终端用vim写完pl保存之后,就可以直接./xxx.pl执行了
虽然解决我的烦心事

但是发现这种监控写法有个缺陷,因为监控执行的过程是每创建一个新文件,inotifywait就重新启动一次(在高并发的情况下,显然在这个时间差里进来的文件是要露掉的)

如果让inotifywait 一直处于监控状态 可以用-m参数

代码: 全选

inotifywait -m -e create,moved_to -r --format '%:e %f' ~/perl
问题:在带了-m参数的情况下 如何触发事件(最好能精确的触发事件,chmod 精确到具体的文件名,包括~/perl下的子目录下新建xxx.pl的情况)
气血鼓荡,身体发胀,偶飘上头,三时舒畅
gzbao9999
帖子: 627
注册时间: 2008-11-08 18:34

Re: inotify持续精确触发事件问题

#2

帖子 gzbao9999 » 2010-08-18 17:50

代码: 全选

inotifywait -m -e create,moved_to -r --format '%w%f' ~/perl|while read i;do if [ `echo $i|grep -Po '.*.pl$'` ] ;then chmod a+x $i;fi;done
:em06 我X昨天下班走的急,居然粘贴错了,已更正
上次由 gzbao9999 在 2010-08-19 9:07,总共编辑 4 次。
气血鼓荡,身体发胀,偶飘上头,三时舒畅
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: inotify持续精确触发事件问题

#3

帖子 eexpress » 2010-08-18 20:22

支持折腾。
用incrontab吧。只是记得有过不触发的现象。而且,不是所说的那种1秒间隔的固有问题。
incrontab -l
● 鸣学
头像
c\nc
帖子: 231
注册时间: 2007-12-25 12:51

Re: inotify持续精确触发事件问题

#4

帖子 c\nc » 2010-08-19 11:22

高并发的话还是用python写个脚本吧,有pyinotify库。
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: inotify持续精确触发事件问题

#5

帖子 astolia » 2010-08-28 23:45

其实可以直接利用vim的自动事件处理

将下面的加入到~/.vimrc就可以了

代码: 全选

function! PlWrite()
    :!chmod +x %
    :w
endfunction
autocmd BufWritePost *.pl :call PlWrite()
你在vim中使用:w时,会去自动执行chmod后再保存一次(避免vim提示文件已改变)
回复