我正在使用backup_fu来备份我的数据库。 在crontab中,你有这个命令:
* * * * * cd /var/www/amplify/current && RAILS_ENV=production /usr/bin/env rake backup
是的,我知道一分钟的备份是激烈的,但我只是在做这个testing。 一旦我开始工作,我会改变这个间隔。
注意:
Linux version 2.6.18-194.8.1.el5.028stab070.5 (root@rhel5-build-x64) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Fri Sep 17 19:10:36 MSD 2010 /var/log/cron ,它似乎运行: Feb 27 00:20:01 amplify crond[1667]: (ramon) CMD (cd /var/www/amplify/current && RAILS_ENV=production /usr/bin/env /usr/bin/rake backup) 任何帮助表示赞赏,谢谢!
看来,这最终成为一个RVM的问题,而不是服务器之一。 我道歉。 感谢您的回答; 他们帮我弄清楚了。
最后一个工作是:
cd /var/www/amplify/current && source /home/ramon/.rvm/environments/ree-1.8.7-2010.02@rails3 && RAILS_ENV=production /home/ramon/.rvm/gems/ree-1.8.7-2010.02@rails3/bin/rake backup &>/home/ramon/backup.log
关键是使用source /home/ramon/.rvm/environments/ree-1.8.7-2010.02@rails3 。
当我问韦恩Seguin关于进入目录和自动加载.rvmrc,他说,只有在以下情况下才能工作:
所以看来在cron中,RVM作为一个函数没有正确加载,因为之前我已经“信任”.rvmrc。
您是否检查过运行cron作业的帐户的邮件,命令的输出应该显示在那里,并且可能包含有关该问题的线索。
将命令的输出捕获到文件add &>/path/to/logfile到命令末尾,以查明发生了什么。
这个:
/usr/bin/env rake backup
取决于包含rake位置的PATH 。 这和简单的一样
rake backup
cron的环境与交互式会话的环境不同。 将crontab中的行改为直接指向rake可执行文件:
* * * * * cd /var/www/amplify/current && RAILS_ENV=production /path/to/rake backup
或者设置你的crontab的PATH (在crontab中)来包含它:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/path/to/where/rake/is
设置PATH在你的crontab是不是很便携,我build议你做这样的事情:
~ $ rvm env --path /Users/james/.rvm/environments/ruby-1.9.3-p392
那个文件里有什么:
~ $ cat `rvm env --path` export PATH ; PATH="/Users/james/.rvm/gems/ruby-1.9...
所以我们可以做到这一点:
~ $ crontab -e 0 * * * * source /Users/james/.rvm/environments/ruby-1.9.3-p392 && command # or 0 * * * * rvm use 1.9.3@myenv && source `rvm env --path` && command
把你的cronjob放到单独的脚本中,并在crontab中调用它。
cd / var / www / amplify / current && RAILS_ENV =生产/ usr / bin / env rake备份