分页: 1 / 1

[已解决] inotify 用法 ,如何监视文件读写操作,实时打印当前被读写的文件。

发表于 : 2008-09-15 16:11
sevk
想监视文件读写,是不是要自己开发?有没有相关的库?

已经解决,看4楼。

inotify使用

发表于 : 2008-09-15 16:13
luojie-dune
I belive Ubuntu does not have a write protect.

发表于 : 2008-09-15 18:37
eexpress
appamor?
记得还有其他方法的。就像dbus的通知的钩子。

Re: 如何监视文件写入操作,实时打印当前被写入的文件。

发表于 : 2008-11-10 10:28
sevk
谢谢EE.
inotify 的监视

inotify 监视
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到同一目录就能使用.
或者 sudo aptitude install libinotify-ruby1.9.1 也行

使用方法:(这里用来监视/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
很好用 :)

Re: [已解决]如何监视文件写入操作,实时打印当前被写入的文件。

发表于 : 2008-11-10 12:56
windwiny
paco 可以记录修改的,不过他是记录到文件的

Re: [已解决]如何监视文件写入操作,实时打印当前被写入的文件。

发表于 : 2008-11-14 9:55
sevk
windwiny 写了:paco 可以记录修改的,不过他是记录到文件的
paco 是什么软件啊?

Re: [已解决]如何监视文件读写操作,实时打印当前被读写的文件。

发表于 : 2008-11-14 16:53
dwl301
改改应该能重定向到屏幕吧

Re: [已解决]如何监视文件读写操作,实时打印当前被读写的文件。

发表于 : 2008-11-14 19:13
sevk
不用改,默认是输出到屏幕的.