【问题标题】:Ruby Cron job not running?Ruby Cron 作业没有运行?
【发布时间】:2014-01-07 10:52:45
【问题描述】:

我的 cron 任务无法完成。在过去的几个小时里,我一直在旋转我的轮子,但没有运气。

我的 crontab 中有这一行:

* * * * * /usr/local/rvm/rubies/ruby-2.0.0-p195/bin/ruby /home/pra/grinder/misc_scripts/daily_total_logger.rb

我可以运行命令:

/usr/local/rvm/rubies/ruby-2.0.0-p195/bin/ruby /home/pra/grinder/misc_scripts/daily_total_logger.rb

它工作没有问题。

我将它设置为每分钟运行一次,这样我就可以查看日志,果然我在日志中看到了这一点 (/var/log/cron):

Dec 19 01:32:01 hostname CROND[4574]: (root) CMD (/usr/local/rvm/rubies/ruby-2.0.0-p195/bin/ruby /home/pra/grinder/misc_scripts/daily_total_logger.rb)

我已经在两台不同的服务器上复制了同样的行为(在使用脚本一个小时后,我想我只是将它移到另一台服务器上,但同样的问题在那里)。

我又尝试了一件事。创建另一个具有与其他操作相同的权限的 ruby​​ 文件(将日期时间附加到文件中)。我使用以下代码创建了 /home/pra/grinder/misc_scripts/test.rb

open('/home/log.log', 'a') do |f|
  f.puts Time.now.to_s
end

而且效果很好。快速检查权限表明两个文件具有相同的权限

-rw-r--r--. 1 root root 348 Dec 19 00:52 daily_total_logger.rb
-rw-r--r--. 1 root root  61 Dec 19 01:13 test.rb 

我知道最好不要在 root 中运行它,我只是想消除所有潜在的问题。我无法为我的生活找出可能导致这种情况的原因。我简化了脚本,但这个超级简单的脚本仍然有同样的错误:

require 'pg'

conn = PG.connect(dbname: '***',user: '***',password: '***', host: '***')
query = "INSERT INTO foobar (foo, bar) VALUES (1, 3)"
conn.exec(query)

puts "Done..."

如果我从命令行运行它,它工作正常。如果我将其作为 cron 作业运行,就不会完成。我完全感到困惑 - 两台服务器上的相同问题,一台 debian,一台 redhat...任何帮助将不胜感激。

【问题讨论】:

    标签: ruby cron crontab


    【解决方案1】:

    我追查到这一行:

    require 'pg'
    

    如果我在脚本中需要该库,则脚本的其余部分在作为 cron 作业调用时会停止运行,但在从命令行调用时可以正常工作。有关这方面的更多信息,我在这里更好地记录了这个问题(希望有人能解释为什么会这样):

    Requiring a Ruby Gem in Ruby Script breaks Cron Job Execution

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 2018-06-11
      • 2014-04-04
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2016-05-09
      相关资源
      最近更新 更多