分页: 1 / 1

inotify持续精确触发事件问题

发表于 : 2010-08-18 15:16
gzbao9999
写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的情况)

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

发表于 : 2010-08-18 17:50
gzbao9999

代码: 全选

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昨天下班走的急,居然粘贴错了,已更正

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

发表于 : 2010-08-18 20:22
eexpress
支持折腾。
用incrontab吧。只是记得有过不触发的现象。而且,不是所说的那种1秒间隔的固有问题。
incrontab -l

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

发表于 : 2010-08-19 11:22
c\nc
高并发的话还是用python写个脚本吧,有pyinotify库。

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

发表于 : 2010-08-28 23:45
astolia
其实可以直接利用vim的自动事件处理

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

代码: 全选

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