Inotify

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
sweetass
帖子: 1
注册时间: 2008-05-19 10:46

Inotify

#1

帖子 sweetass » 2008-05-19 10:49

有没有人在ubuntu下用过inotify?谢谢
头像
sevk
帖子: 2060
注册时间: 2007-05-08 16:26
系统: arch
来自: 火星内核某分子内某原子核内
联系:

Re: Inotify

#2

帖子 sevk » 2008-12-11 21:28

[已解决] inotify 用法 ,如何监视文件读写操作,实时打印当前被读写的文件。 viewtopic.php?f=124&t=149916

inotifywait 监视 Ruby 脚本代码 http://raa.ruby-lang.org/project/ruby-inotify/
下载ruby-inotify后,老套路:

代码: 全选

ruby extconf.rb
make
sudo make install
这样就成生inotify.so并安装好了.其实只要make就有inotify.so,复制inotify.so到同一目录就能使用了.

使用方法:(这里用来监视/bin目录)

代码: 全选

ruby examples/watcher.rb /bin
开个终端执行ls就会有反应了. :) 简单吧

我修改了一下 examples/watcher.rb :

代码: 全选

#!/usr/bin/ruby
require 'inotify'
require 'find'
i = Inotify.new
t = Thread.new do
        i.each_event do |ev|
                puts "#{Time.now}, #{ev.name}, #{ev.mask}"
        end
end
raise("Specify a directory") if !ARGV[0]
Find.find(ARGV[0]) do |e|
#  next if e != /^\/home\/sevk\/\./
        if ['.svn', 'CVS', 'RCS'].include? File.basename(e) or !File.directory? e
                Find.prune
        else
                begin
                        puts "Adding #{e}"
                        i.add_watch(e, Inotify::CREATE | Inotify::MODIFY | Inotify::ACCESS)
                rescue
                        puts "Skipping #{e}: #{$!}"
                end
        end
end
t.join
很好用 :)
上次由 sevk 在 2008-12-14 14:17,总共编辑 2 次。
笔记本 :
F208S : gentoo
A460P i3G D6 : UBUNTU + WIN7
UN43D1 : UBUNTU + WIN7
1000人超级QQ群 LINUX + WIN : 31465544 或 18210387
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: Inotify

#3

帖子 eexpress » 2008-12-12 9:02

inotifywait inotifywatch 现成的。还吹ruby。 :em04
● 鸣学
回复