每当/ cron作业失败,但手动罚款

时间:2013-06-30 12:02:13

标签: ruby-on-rails ruby cron whenever

与cron工作一起苦苦挣扎。服务器上的Ubuntu 11.10。

直到最近,每当cron工作每天成功运行几次;然后由于另一个问题我不得不从服务器中删除RVM并返回到没有RVM安装的ruby 1.9.3(我确定这与它有关)

我的应用中没有.rvmrc文件

现在,cron作业在某种程度上失败了,正如我从syslog中看到的那样:

Jun 30 08:03:01 ip-10-251-30-96 CRON[18706]: (ubuntu) CMD (/bin/bash -l -c 'cd /var/www/my_app/app/releases/201300629090954 && script/rails runner -e production '\''User.remind_non_confirmed_users'\''')
Jun 30 08:03:01 ip-10-251-30-96 CRON[18705]: (CRON) error (grandchild #18706 failed with exit status 127)
Jun 30 08:03:01 ip-10-251-30-96 CRON[18705]: (CRON) info (No MTA installed, discarding output)

如果我手动运行该命令(使用env - / bin / bash -l -c'...')它运行正常..

我要添加“set:output,'tmp / when.log'”来随时查看发生了什么,但我怀疑这是ruby版本/路径的问题。

知道如何正确诊断/解决这个问题吗?

这是我的cron /每当工作:

3 8 * * * /bin/bash -l -c 'cd /var/www/my_app/app/releases/20130629090954 && script/rails runner -e production '\''User.remind_non_confirmed_users'\''' 
非常感谢

2 个答案:

答案 0 :(得分:0)

为了帮助诊断发生了什么,我通常将cron输出捕获到一个单独的日志文件中。可能有一个错误,只是没有被记录在任何地方。

@hourly bash -lc 'cd /path/to/app; RAILS_ENV=production bundle exec rake remind_non_confirmed_users' >> /path/to/app/log/tasks.log

另外,我更喜欢为cron作业创建rake任务而不是跑步者。对于我来说,通过命令行调用比运行程序更容易一些。

答案 1 :(得分:0)

我仍然不确定发生了什么,运行随着'set:output'应该已经创建了日志文件,但它没有,但是作业仍然失败(并且对于日志文件有写权限) )。

我非常厌倦了我重新开发了解决方案而没有使用脚本/跑步者,而是让cron只调用一个URL来处理延迟的工作。对于我们的特殊情况,这有许多额外的好处,但我知道它对许多人来说并不理想。

感谢您的建议