我有一个cron作业来运行一个Ruby脚本,它在命令行(来自用户“user”)上运行正常,但是cron失败了,因为它无法找到ruby gem TMail。我手动将tmail gem安装到我的〜/ .bms / dir,由我的〜/ .bashrc脚本指向,由Nate作为suggested。
从shell手动调用时(在死区服务器上)
./家/用户/ site.com / APPDIR / testbalances.sh
工作正常,但是从CRONtab web界面(相同的命令),我得到一个日志邮件:
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in
gem_original_require': no such file to load -- tmail (LoadError) from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in
require' 来自afschriftmonitor / statement_monitor.rb:7
afschriftmonitor / statement_monitor.rb:7文件的第6行和第7行
要求'rubygems' 要求'tmail'
看来CRON是从另一台服务器运行的,还是忽略了〜/ .bashrc文件?我怎样才能解决这个问题?它似乎是一个托管特定问题的Dreamhost,因为该脚本在我的Mac上本地运行良好 - 如上所述 - 从我在Dreamhost上的shell帐户中运行良好。我很困惑。
答案 0 :(得分:1)
这些问题总是在你的shell环境和cron的环境之间不匹配。有关各种建议,请参阅此页面:Does your cron script run in a bash shell, but not while running under crontab?
答案 1 :(得分:1)
我自己修正了:事实证明这是一个由两部分组成的问题:
结合这些我设法解决问题:
将以下行添加到我的bash脚本的顶部,从CRON点燃:
。 〜/ .shrc
通过在脚本中添加对env
的调用来检查正确的环境很简单。