与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'\'''
非常感谢
答案 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来处理延迟的工作。对于我们的特殊情况,这有许多额外的好处,但我知道它对许多人来说并不理想。
感谢您的建议