2

这看起来像是关于 stackoverflow 的常见问题解答,但我的要求有点不同。虽然我之前使用 BackgroundRB 和 DJ 在 ruby​​ 中运行后台进程,但这次我的要求是对大量数据运行一些繁重的分析和数学计算,而我只需要在每月的前 15 天执行此操作. 通过这个,我很想使用 cron 并运行一个 ruby​​ 脚本来实现这个目标。

我想知道/理解的是: 1 - 使用 cron 是个好主意(因为我不是系统管理员,所以虽然我对 cron 有基本的了解,但我对完美地做到这一点并不太自信) 2 - 我们能否以某种方式将 DJ 修改为仅在该月的前 15 天运行(使用/不使用 cron),然后在当天队列中的所有作业结束后停止并退出(不希望它每次 ping 数据库以获取新工作......当 DJ 开始时,无论工作在队列中,这就是全部)。

我不确定我是否以正确的方式提出了这个问题,但是在这个方向上的任何帮助都将不胜感激。

谢谢

4

4 回答 4

3

使用 cron 的“分钟小时日月日”时间规范,每月 1 日至 15 日凌晨 3:33 将是“33 3 1-15 * *”

于 2010-04-12T20:47:51.120 回答
0

是啊,为什么不呢?与cron一起去。它在野外经过了很好的测试,非常适合运行定期任务并且非常易于使用。您甚至不需要学习 crontab 语法(尽管它非常简单)——只需将您的脚本放入 /etc/cron.daily(此选项可能仅在某些 Linux 发行版上可用)。

我不确定“只有一个月的前 15 天”这件事,但您可以在任务中轻松处理这种情况,对吧?

编辑:

查看 par 的答案以了解如何仅在特定日期范围内运行任务。

于 2010-04-12T17:14:24.697 回答
0

使用 cron 真的很容易,而且你有很多例子,而且它是可靠的。

无论如何,这里有一些您可能想看的 Railcast 的屏幕截图:

椋鸟和工作

自定义守护程序

于 2010-04-12T20:54:38.763 回答
0

我也有这个要求。我遵循了Advanced Rails 食谱书中的“自动定期任务”食谱 75 。食谱是大卫·博克写的。它有一些代码片段和指南,说明如何使用 cron 和 capistrano 实现这一点。但是,关于必须在目标计算机上的用户/权限,存在一个未解决(但已提及)的问题。把它做好并不难,你只需要记住去做,然后把它放在你部署的 capistrano 脚本中。

似乎 David Bock 继续在这方面工作,现在已经创建了一个与 cron 一起使用的 gem:查看他的博客,并在 github 上关注 crondonkulous。Crondonkulous 可能会很好地处理这个用户/权限的事情等等,我还没有尝试过。

贵族

于 2010-04-13T08:49:02.747 回答