我完全坚持一个不想工作的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
文件中没有问题)
我在这个cron上添加了一个日志文件(在行尾)> /tmp/crontabRedmin.log 2&>1
,但日志文件中没有写入任何内容。
我创建了一个.sh脚本,我为rake命令(/usr/local/bin/rake
或&& RAILS_ENV=production bundle exec rake
)尝试了不同的语法,一切都在我的命令行上运行,但没有通过cron。
请帮助我知道,我错过了什么。
答案 0 :(得分:0)
使用cron作业执行rake任务时,不会处理.bash_profile文件,因此您需要将环境变量添加到sell脚本中。
使用以下命令查找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