繁体   English   中英

Bundle exec rake不在cron中运行

[英]bundle exec rake doesn't run in cron

我做了一些研究,但是所有与cron和bundle exec相关的问题都没有解决,如果已经讨论过,我将再次为我辩解。

我正在运行Ubuntu 13.10,并且有一个Ruby On Rails应用程序,该应用程序几乎不需要每隔几分钟就在Cron上运行的一些rake任务。

我在任何时候运行宝石,借助该语法

every 3.minutes do
  rake 'update_balance'
end

转换为crontab文件中的这一行

0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * * * /bin/bash -l -c 'cd /var/fruby/releases/20140513091404 && RAILS_ENV=production bundle exec rake update_balance --silent'

当我完全复制此行时

/bin/bash -l -c 'cd /var/fruby/releases/20140513091404 && RAILS_ENV=production bundle exec rake update_balance --silent'

并在它的控制台中运行,它运行得很好,并且可以按预期更新数据库中的多个记录。

但是当设置为cron时,我可以看到它在/ var / log / syslog文件中运行,但是实际上并没有执行任何操作。

May 13 13:06:01 sandbox2 CRON[9656]: (root) CMD (/bin/bash -l -c 'cd /var/fruby/releases/20140513091404 && RAILS_ENV=production bundle exec rake update_balance --silent')
May 13 13:06:01 sandbox2 CRON[9655]: (CRON) info (No MTA installed, discarding output)
May 13 13:09:01 sandbox2 CRON[9789]: (root) CMD (/bin/bash -l -c 'cd /var/fruby/releases/20140513091404 && RAILS_ENV=production bundle exec rake update_balance --silent')

即使我将&> / tmp / mycommand.log添加到crontab命令中,每次下一次启动cron命令都会完全截断该文件,但是,再次,如果我手动启动它,它会很好地工作,并留下此输出。

2014-05-13T11:11:25Z 10292 TID-2asbo INFO: Sidekiq client with redis options  {:url=>"redis://127.0.0.1"}
Sent task for updating 2 users

非常感谢对此问题的任何帮助。 谢谢。

由于cron以不同的用户身份运行,因此我之前遇到过类似的问题。 特别是对于rake,我必须使用完整路径进行rake因为cron用户在PATH中没有正确的文件夹。

因此,我用于耙任务的cron行如下所示:

30 8 * * 1 cd /ebs/www/apps/myproject/www && /usr/local/bin/rake mailer:send_weekly_expiring_users_reminder RAILS_ENV=production

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM