0

我正在努力自动运行我的 .rb 脚本。目前我必须去终端并输入ruby myscript.

我的计划是,因为我不知道脚本每周/每月运行的确切时间,所以当文件出现在保管箱文件夹中时运行脚本。

它会是这样的:

如果random_file.csv在同一文件夹中看到myscript

myscript加载random_file.csv,对其进行处理,然后保存random_file.csv在单独的文件夹中并将其从保管箱文件夹中删除。

这是否可能,如果没有,自动化脚本有哪些好的替代方案?我是否必须确定每周/每月运行它的时间?任何关于寻找什么的指导表示赞赏。

4

2 回答 2

1

Linux 和 Inotify

如果您在 Linux 上,您可以使用内核的inotify系统在目录更改时创建回调。当与rb-inotify gem配对时,您可以配置一个长时间运行的脚本以在检测到 IN_CREATE 事件时执行一些操作。

信号量或时间戳

更复杂的解决方案包括检查文件时间戳或检查目录内容是否存在差异。举个例子,你可以使用 GNU find 与 cron 结合使用,以在文件更新时间超过一定分钟数时执行脚本。例如,

# Run job every 5 minutes; execute on files less than 7 minutes old.
*/5 * * * * find /path/to/dropbox -cmin -7 -exec /path/to/ruby/script {} +

这并不是真正的幂等,并且有各种各样的方法可能会导致可怕的错误,但这是唾手可得的果实。除非您的系统上没有类似 inotify 的工具,或者无法守护进程,否则我会将这种事情作为最后的手段。不过,有选择总是好的!

于 2013-09-23T21:00:36.370 回答
0

自动化保管箱文件和文件夹的一种方法是使用 automator 。我找到了这个链接,它允许您在保管箱文件夹上设置操作

http://www.hongkiat.com/blog/automate-dropbox-files-with-actions/

于 2013-09-23T20:55:26.717 回答