gpt4 book ai didi

ruby - 每次在 linux 目录中创建新文件时运行一个进程

转载 作者:太空宇宙 更新时间:2023-11-04 09:48:33 24 4
gpt4 key购买 nike

我正在开发一个应用程序。我使用的操作系统是linux。如果可能,我需要在目录中创建的文件上运行 ruby​​ 脚本。我需要让这个脚本一直运行。我首先想到的是inotify:

The inotify API provides a mechanism for monitoring file system events. Inotify can be used to monitor individual files, or to monitor directories.

这正是我需要的,然后我找到了“rb-inotify”,一个 fir inotify 的包装器。

您认为有比使用 inotify 更好的方法来满足我的需求吗?另外,我真的不明白我必须使用 rb-inotify 的方式。

例如,我只是创建一个 rb 文件:

notifier = INotify::Notifier.new
notifier.watch("directory/to/check",:create) do |event|
#do task with event.name file
end

notifier.run

然后我只是 ruby myRBNotifier.rb,它将永远保持循环。我该如何阻止它?任何想法?这是一个好方法吗?

最佳答案

我建议查看 god .它专为此类任务而设计,可以非常轻松地为后台和守护程序应用程序构建监控系统。

至于主要代码本身,inotify 不是跨平台的,因此如果您有可能需要在 Windows 或 Mac OS 上运行,那么您将需要一个不同的解决方案。编写一小段代码来定期检查目标目录是否有更改并不难。如果您需要知道更改了什么,请读取并缓存目录条目,然后在下次代码运行时比较它们。在运行之间使用 sleep 在循环之前等待一段时间。

做类似事情的老派方法是使用 cron 定期启动工作。该作业可以是您的脚本,它通过将文件列表与缓存版本进行比较来检查文件列表是否已更改,然后在出现差异时根据需要采取行动。

关于ruby - 每次在 linux 目录中创建新文件时运行一个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com