【问题标题】:Cronjob does not work on rake commandCronjob 不适用于 rake 命令
【发布时间】:2014-04-24 18:14:10
【问题描述】:

我完全卡在一个不想工作的 cronjob 命令上。

这是我的问题:

我只想在我的 crontab 上启动一个 rake 命令(对于 Redmine:通过 IMAP 检查特定地址上的所有未读电子邮件并创建一个 redmine 票证)

命令如下:

cd /opt/redmine/ && rake redmine:email:receive_imap RAILS_ENV="production" host=imap.gmail.com username=redmine.check@gmail.com ssl=true port=993 password=MyPassword project=level1support unknown_user=accept no_permission_check=1 allow_override=project

我可以在命令行上启动它,一切正常

所以我创建了一个crontab -e 并将这一行添加到我的 crontab 中:

*/10 * * * * cd /opt/redmine/ && rake redmine:email:receive_imap RAILS_ENV="production" host=imap.gmail.com username=redmine.check@gmail.com ssl=true port=993 password=MyPassword project=level1support unknown_user=accept no_permission_check=1 allow_override=project

但它不起作用。

cron 似乎在运行(在我的 /var/log/cron 文件中没问题)

我像这样(在行尾)> /tmp/crontabRedmin.log 2&>1 在这个 cron 上添加了一个日志文件,但日志文件上没有写入任何内容。

我创建了一个 .sh 脚本,我为 rake 命令尝试了不同的语法(/usr/local/bin/rake&& RAILS_ENV=production bundle exec rake),一切都在我的命令行上运行,但通过 cron 没有。

请帮助我知道,我错过了什么。

【问题讨论】:

  • 您是在使用某些东西来管理您的 ruby​​ 安装,还是使用 unix/linux 包管理器为您安装 ruby​​ 和 rake?
  • @Gizmomogwai 我刚刚安装了一个 linux 包管理器
  • 在命令行和由 cron 触发的脚本中尝试“which rake”和“which ruby​​”,看看是否使用相同的版本!与捆绑相同。

标签: ruby linux cron rake redmine


【解决方案1】:

使用 cron 作业执行 rake 任务时,不会处理 .bash_profile 文件,因此您需要将环境变量添加到销售脚本中。

使用以下命令查找 Ruby Gems 路径等:

echo $GEM_HOME
echo $GEM_PATH
echo $PATH

将以下内容添加到您的 shell 脚本中:

#!/bin/bash
export PATH=$PATH:/home/user/.rvm/gems/ruby-2.0.0-p0/bin:/home/user/.rvm/gems/ruby-2.0.0-p0@global/bin:/home/user/.rvm/bin

export GEM_HOME=/home/user/.rvm/gems/ruby-2.0.0-p0

export GEM_PATH=/home/user/.rvm/gems/ruby-2.0.0-p0:/home/user/.rvm/gems/ruby-2.0.0-p0@global

【讨论】:

  • echo $GEM_HOME 和 echo $GEM_PATH 不返回任何内容。我尝试了 gem environment ,并在我的 .sh 脚本中添加了我的 GEM PATHS 和 INSTALLATION DIRECTORY 。但它似乎确实有效。
猜你喜欢
  • 2021-05-09
  • 2021-06-17
  • 2011-03-28
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-17
  • 2012-05-13
相关资源
最近更新 更多