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-Bluepill是一款由Ruby语言编写的简单而强大的进程监控工具。它被设计用来确保你的应用程序在生产环境中始终保持运行状态,即使某个进程崩溃,Bluepill也会自动重启它,从而提供了高可用性和稳定性。这个工具...
总的来说,Ruby-Skylight为Rails开发者提供了一套强大的性能监控解决方案,通过深入分析和可视化,帮助团队更有效地优化应用性能,提高用户体验。对于任何希望提升Rails应用性能的开发者而言,这都是一个不可或缺的...
Ruby-God是一个用Ruby语言编写的监控框架,其设计目标是提供一个简单、灵活且可扩展的工具,用于管理各种系统服务和应用的运行状态。God以其强大的功能和易用性在Ruby社区中赢得了广泛的认可。 God框架的核心理念是...
- **互斥锁与内存可见性**:互斥锁不仅解决了数据竞争问题,还解决了内存可见性问题,即确保线程间正确地同步内存中的数据变化。 - **互斥锁性能**:互斥锁本身具有一定的开销,不当使用可能会导致性能下降。因此,...
在Ruby开发中,Web爬虫是用于自动化网络数据提取的重要工具,特别是在数据挖掘、数据分析以及信息监控等领域。Wombat的出现为Ruby社区提供了一个易于上手且功能强大的解决方案。它不仅适用于初学者,也适合有经验的...
你可以查看示例代码、阅读文档,甚至参与项目贡献,以进一步提升你的Ruby监控技能。 总的来说,Ruby-Yabeda是一个功能强大的监控框架,能够帮助开发者全面了解和优化Ruby应用程序的性能。通过其可扩展性和对多种...
通过自动化脚本实现网络拓扑映射,可以提高效率,减少人工错误,并实时更新网络结构变化。 #### 2. 使用Ruby进行自动化脚本开发 Ruby是一种动态、面向对象、通用型编程语言,以其简洁和高效著称。Ruby支持多种编程...
Ruby的灵活性使得BOSH能够快速适应变化,同时保持代码的可读性和可维护性。 BOSH的核心功能包括: 1. **部署管理**:BOSH能够自动配置虚拟机(VMs)并安装软件包,这些软件包被称为“jobs”。它使用一个元数据描述...
- **使用Autotest**:自动测试框架,可以实时监控文件变化并自动运行测试。 - **调试应用**:使用调试工具逐步执行代码,检查变量值等。 - **运行调试器**:启动调试会话来深入分析程序的行为。 - **使用断点**:在...
在计算方面,Ruby-GoogleCloud开发包提供了对Google Compute Engine的接口,允许开发者创建、管理和监控虚拟机实例。通过API,开发者可以轻松扩展或缩减资源,以适应应用程序的需求变化。同时,它还支持负载均衡和...
标题中的“Ruby-watchexec监测某一路径当检测到有修改时运行一个命令”指的是一个名为`watchexec`的工具,它是用Ruby语言编写的,专为开发者设计,可以在指定的目录或文件路径下监控文件变动,并在检测到变化时自动...
- **持续监控**:部署日志收集与监控系统,及时发现并解决问题,确保系统稳定运行。 #### 七、总结 通过以上讨论可以看出,Ruby on Rails作为一种强大的Web开发框架,在满足企业级系统开发需求方面具有明显优势。...
在IT领域,启动文件和监控工具是系统管理和优化的关键元素。本文将主要围绕"mecache"工具,启动文件以及监控技术展开讨论。...通过学习和实践,我们可以更好地掌握这些技术,以应对不断变化的IT环境。
此外,Python有`watchdog`库,Ruby有`fsevent` gem,这些库都提供了更高级别的抽象,使得跨平台的文件监控变得更容易。 3. **使用系统工具**:`fseventer`就是这样的一个系统工具,它通过图形化界面直观地展示了...
最后,持续监控和优化A/B测试至关重要。随着时间的推移,用户行为可能会变化,因此定期评估和调整测试是保持产品竞争力的关键。通过持续学习和改进,你可以利用A/B测试的力量来驱动业务增长。 总结来说,Ruby on ...
1. **物联网管理器**:Ruby-Engine作为一款物联网管理器,能够整合不同的物联网设备和传感器,实现对它们的统一监控和控制。它支持多种协议,如MQTT、CoAP等,确保与各种硬件设备的兼容性。 2. **基于HTML5的用户...
可能需要将这个工具集成到你的Ruby应用中,通过配置文件设置监控级别和报警阈值,然后根据提供的指示进行安装和运行。 总之,跟踪值得注意的请求和后台作业对于优化Ruby应用至关重要。"notable-master"可能提供了一...
当数据发生变化时,Searchkick能处理更新和删除操作。`searchkick`模型方法提供了`update_index`和`destroy_index`,分别用于更新单个记录和删除记录的索引。 ### 7. 分页和分块 Searchkick支持Elasticsearch的...