Ruby Cron的工作没有运行?

时间:2013-12-19 01:53:31

标签: ruby cron crontab

我的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 ......任何帮助都会受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

我追溯到这一行:

require 'pg'

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

Requiring a Ruby Gem in Ruby Script breaks Cron Job Execution

相关问题