`
jimmygan
  • 浏览: 83905 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

ruby监控目录变化

阅读更多
ruby监控目录变化

安转gem插件
#gem install ffi


监控代码
require 'rubygems'
require 'ffi'
module Inotify
  extend FFI::Library
  ffi_lib FFI::Library::LIBC
  class Event < FFI::Struct
    layout \
      :wd, :int,
      :mask, :uint,
      :cookie, :uint,
      :len, :uint
  end
  attach_function :init, :inotify_init, [ ], :int
  attach_function :add_watch, :inotify_add_watch, [ :int, :string, :uint ], :int
  attach_function :rm_watch, :inotify_rm_watch, [ :int, :uint ], :int
  attach_function :read, [ :int, :buffer_out, :uint ], :int
  IN_ACCESS=0x00000001
  IN_MODIFY=0x00000002
  IN_ATTRIB=0x00000004
  IN_CLOSE_WRITE=0x00000008
  IN_CLOSE_NOWRITE=0x00000010
  IN_CLOSE=(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
  IN_OPEN=0x00000020
  IN_MOVED_FROM=0x00000040
  IN_MOVED_TO=0x00000080
  IN_MOVE= (IN_MOVED_FROM | IN_MOVED_TO)
  IN_CREATE=0x00000100
  IN_DELETE=0x00000200
  IN_DELETE_SELF=0x00000400
  IN_MOVE_SELF=0x00000800
  # Events sent by the kernel.
  IN_UNMOUNT=0x00002000
  IN_Q_OVERFLOW=0x00004000
  IN_IGNORED=0x00008000
  IN_ONLYDIR=0x01000000
  IN_DONT_FOLLOW=0x02000000
  IN_MASK_ADD=0x20000000
  IN_ISDIR=0x40000000
  IN_ONESHOT=0x80000000
  IN_ALL_EVENTS=(IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE \
      | IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM \
      | IN_MOVED_TO | IN_CREATE | IN_DELETE \
      | IN_DELETE_SELF | IN_MOVE_SELF)

end
if $0 == __FILE__   #$0是用于启动程序的文件名
  fd = Inotify.init
  puts "fd=#{fd}"
  wd = Inotify.add_watch(fd, "/home/jimmygan/bnet/", Inotify::IN_ALL_EVENTS)
  fp = FFI::IO.for_fd(fd)
  puts "wfp=#{fp}"
  while true
    buf = FFI::Buffer.alloc_out(Inotify::Event.size + 4096, 1, false)
    ev = Inotify::Event.new buf
    ready = IO.select([ fp ], nil, nil, nil)
    n = Inotify.read(fd, buf, buf.total)
    puts "Read #{n} bytes from inotify fd"
    puts "event.wd=#{ev[:wd]} mask=#{ev[:mask]} len=#{ev[:len]} name=#{ev[:len] > 0 ? buf.get_string(16) : 'unknown'}"
  end
end
分享到:
评论

相关推荐

    Ruby-BluepillRuby编写的简单进程监控工具

    Ruby-Bluepill是一款由Ruby语言编写的简单而强大的进程监控工具。它被设计用来确保你的应用程序在生产环境中始终保持运行状态,即使某个进程崩溃,Bluepill也会自动重启它,从而提供了高可用性和稳定性。这个工具...

    Ruby-GodRuby编写的一个易于配置易于扩展的监测框架

    God框架提供了诸如`every`(周期性检查)和`watch`(监控状态变化)等内置方法,便于用户指定监测任务,同时它还支持在脚本中使用Ruby语言的全部功能。 ### 扩展性:插件与集成 God框架的另一个亮点是它的扩展性。...

    Ruby-SkylightRails应用程序的智能分析工具能够可视化请求性能

    总的来说,Ruby-Skylight为Rails开发者提供了一套强大的性能监控解决方案,通过深入分析和可视化,帮助团队更有效地优化应用性能,提高用户体验。对于任何希望提升Rails应用性能的开发者而言,这都是一个不可或缺的...

    Working with Ruby Threads

    - **互斥锁与内存可见性**:互斥锁不仅解决了数据竞争问题,还解决了内存可见性问题,即确保线程间正确地同步内存中的数据变化。 - **互斥锁性能**:互斥锁本身具有一定的开销,不当使用可能会导致性能下降。因此,...

    Ruby-Wombat轻量级的RubyWeb爬虫

    在Ruby开发中,Web爬虫是用于自动化网络数据提取的重要工具,特别是在数据挖掘、数据分析以及信息监控等领域。Wombat的出现为Ruby社区提供了一个易于上手且功能强大的解决方案。它不仅适用于初学者,也适合有经验的...

    Ruby-Yabeda用于从Ruby应用程序收集和导出指标的可扩展框架

    你可以查看示例代码、阅读文档,甚至参与项目贡献,以进一步提升你的Ruby监控技能。 总的来说,Ruby-Yabeda是一个功能强大的监控框架,能够帮助开发者全面了解和优化Ruby应用程序的性能。通过其可扩展性和对多种...

    Ruby自动化脚本实现网络拓扑映射

    通过自动化脚本实现网络拓扑映射,可以提高效率,减少人工错误,并实时更新网络结构变化。 #### 2. 使用Ruby进行自动化脚本开发 Ruby是一种动态、面向对象、通用型编程语言,以其简洁和高效著称。Ruby支持多种编程...

    Ruby-CloudFoundryBOSH是一个开源的工具链用于发布工程部署生命周期管理分布式系统的监控

    Ruby的灵活性使得BOSH能够快速适应变化,同时保持代码的可读性和可维护性。 BOSH的核心功能包括: 1. **部署管理**:BOSH能够自动配置虚拟机(VMs)并安装软件包,这些软件包被称为“jobs”。它使用一个元数据描述...

    NetBeans Ruby and Rails IDE with JRuby 2009

    - **使用Autotest**:自动测试框架,可以实时监控文件变化并自动运行测试。 - **调试应用**:使用调试工具逐步执行代码,检查变量值等。 - **运行调试器**:启动调试会话来深入分析程序的行为。 - **使用断点**:在...

    Ruby-GoogleCloud官方的Ruby客户端开发包

    在计算方面,Ruby-GoogleCloud开发包提供了对Google Compute Engine的接口,允许开发者创建、管理和监控虚拟机实例。通过API,开发者可以轻松扩展或缩减资源,以适应应用程序的需求变化。同时,它还支持负载均衡和...

    Ruby-watchexec监测某一路径当检测到有修改时运行一个命令

    标题中的“Ruby-watchexec监测某一路径当检测到有修改时运行一个命令”指的是一个名为`watchexec`的工具,它是用Ruby语言编写的,专为开发者设计,可以在指定的目录或文件路径下监控文件变动,并在检测到变化时自动...

    Enterprise Integration with Ruby

    - **持续监控**:部署日志收集与监控系统,及时发现并解决问题,确保系统稳定运行。 #### 七、总结 通过以上讨论可以看出,Ruby on Rails作为一种强大的Web开发框架,在满足企业级系统开发需求方面具有明显优势。...

    启动文件和监控工具

    在IT领域,启动文件和监控工具是系统管理和优化的关键元素。本文将主要围绕"mecache"工具,启动文件以及监控技术展开讨论。...通过学习和实践,我们可以更好地掌握这些技术,以应对不断变化的IT环境。

    Mac OS X下的文件监控

    此外,Python有`watchdog`库,Ruby有`fsevent` gem,这些库都提供了更高级别的抽象,使得跨平台的文件监控变得更容易。 3. **使用系统工具**:`fseventer`就是这样的一个系统工具,它通过图形化界面直观地展示了...

    Ruby-Rails的AB测试

    最后,持续监控和优化A/B测试至关重要。随着时间的推移,用户行为可能会变化,因此定期评估和调整测试是保持产品竞争力的关键。通过持续学习和改进,你可以利用A/B测试的力量来驱动业务增长。 总结来说,Ruby on ...

    ruby-engine:物联网的可扩展建筑自动化

    1. **物联网管理器**:Ruby-Engine作为一款物联网管理器,能够整合不同的物联网设备和传感器,实现对它们的统一监控和控制。它支持多种协议,如MQTT、CoAP等,确保与各种硬件设备的兼容性。 2. **基于HTML5的用户...

    跟踪值得注意的请求和后台作业_Ruby_下载.zip

    可能需要将这个工具集成到你的Ruby应用中,通过配置文件设置监控级别和报警阈值,然后根据提供的指示进行安装和运行。 总之,跟踪值得注意的请求和后台作业对于优化Ruby应用至关重要。"notable-master"可能提供了一...

    Ruby-Searchkick利用Rails和Elasticsearch轻松实现智能搜索

    当数据发生变化时,Searchkick能处理更新和删除操作。`searchkick`模型方法提供了`update_index`和`destroy_index`,分别用于更新单个记录和删除记录的索引。 ### 7. 分页和分块 Searchkick支持Elasticsearch的...

Global site tag (gtag.js) - Google Analytics