【问题标题】:Perform a script automatically every <time a day I set>每次<每天我设置的时间>自动执行一个脚本
【发布时间】:2011-01-26 18:29:43
【问题描述】:

例如,我想在每天凌晨 3 点在两个数据库之间运行一个同步 ruby​​ 脚本(如果可能,在 rails 操作中)。将这些时间存储在数据库中会很好,因为如果同步失败,我想将其设置为在一个小时内再次尝试(在数据库中,如果我可以轻松地将其更改为每天早上 5 点) 'd 想要,甚至是管理我的应用程序的其他管理员)。我想在我的 Rails 应用程序中的一个操作中使用脚本,因此我可以在管理中创建一个页面,只需单击脚本将运行的链接(不是必需的,它可以在单独的 Ruby 文件中,该操作将最终调用,但将其作为专用控制器中的操作会更好,因为我将有很多这样的脚本,我只是喜欢在一个地方有类似的东西)。如果没有诸如 cron 之类的事情——我不知道任何事情——这在某种程度上是可能的吗?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    如果您不想直接处理 cron,请查看 whenever。它为编写 cron 作业提供了很好的语法:

    every :hour do
      runner "MyModel.do_something"
    end
    

    【讨论】:

    • 哦,这和我想做的一模一样!谢谢。
    【解决方案2】:

    您将使用任务调度程序来执行此操作。

    在 Windows 上,标准调度程序称为 Task Scheduler

    在 Linux 上,标准调度程序称为 cron

    两者都非常简单易用。如果您正在编写 Ruby 代码,则可以安排任务。

    例如,要使用cron 安排命令每天每小时运行一次,请输入crontab -e,并添加以下行:

    0 3 * * * /command/to/run
    

    让它每小时运行一次,这样你就可以让它检查数据库,看看它是否应该做点什么:

    0 * * * * /command/to/run
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 2014-03-25
      • 2023-04-01
      • 2012-05-04
      相关资源
      最近更新 更多