使用相同脚本

时间:2015-12-04 06:37:04

标签: ruby linux git bash

我想设置一个脚本并使用cronjob来备份所有存储库。

... FYI

RVM版本:1.20.13,Ruby版本:1.9.3p429,宝石版本:1.8.25,Bundler版本:1.3.5,Rake版本:10.0.4,GitLab信息版本:5.3.0

我尝试了下面的方法,但它们没有用。请帮我设置所需的cronjob。当我手动执行命令时,它们工作正常。

方法1:

#!/bin/bash

cd /home/git/gitlab/

bundle exec rake gitlab:backup:create RAILS_ENV=production

错误:

  

bundle:找不到命令

方法2:

#!/bin/sh

cd /home/git/gitlab/ 

bundle exec rake gitlab:backup:create RAILS_ENV=production

错误:

  

/ bin / sh:bundle:找不到命令

方法3:

10 10 * * * cd /home/git/gitlab && PATH=$PATH:$/home/git/.rvm/gems/ruby-1.9.3-p429/bin:/home/git/.rvm/gems/ruby-1.9.3-p429@global/bin:/home/git/.rvm/rubies/ruby-1.9.3-p429/bin:/home/git/.rvm/bin::/home/git/.rvm/rubies/ruby-1.9.3-p429/.irbrc bundle exec rake gitlab:backup:create RAILS_ENV=production CRON=1 >> /tmp/git_bck.log 2>&1

错误:

  

/home/git/.rvm/gems/ruby-1.9.3-p429@global/bin/ruby_noexec_wrapper:7:在`require':没有这样的文件加载 - 来自/ home / git的rubygems(LoadError) /.rvm/gems/ruby-1.9.3-p429@global/bin/ruby_noexec_wrapper:7

2 个答案:

答案 0 :(得分:1)

你需要做两件事:

1)重新创建命令行中的相同环境。对于在命令行中运行env,然后在cron中运行env并输出到shell,比较其中的2个

2)源rvm(查看你的.bashrc或你的shell有的rc。)

这两件事应该允许你从cron运行脚本。您可以将它们放在脚本的边缘。

答案 1 :(得分:0)

问题解决了:

在.bashrc中,添加了

PATH = $ PATH:$ HOME / .rvm / bin#将RVM添加到PATH以进行脚本编写

导出GIT_HOME = / home / git / git

导出JAVA_HOME = / home / git / jdk

export PATH = $ PATH:$ GIT_HOME / bin:$ JAVA_HOME / bin

source /home/git/.rvm/environments/default

在.bash_profile中,添加了

PATH = $ PATH:$ HOME / bin中

导出路径

[[-s" $ HOME / .rvm / scripts / rvm" ]]&&来源" $ HOME / .rvm / scripts / rvm"

FYI ..

cat /home/git/.rvm/environments/default

出口路径; PATH =" /home/git/.rvm/gems/ruby-1.9.3-p429/bin:/home/git/.rvm/gems/ruby-1.9.3-p429@global/bin:/家/git/.rvm/rubies/ruby-1.9.3-p429/bin:/home/git/.rvm/bin:$PATH"

export rvm_env_string; rvm_env_string ='红宝石1.9.3-429页'

export rvm_path; rvm_path =' /home/git/.rvm'

export rvm_ruby_string; rvm_ruby_string ='红宝石1.9.3-429页'

取消设置rvm_gemset_name

导出RUBY_VERSION; RUBY_VERSION ='红宝石1.9.3-429页'

导出GEM_HOME; GEM_HOME =' /home/git/.rvm/gems/ruby-1.9.3-p429'

导出GEM_PATH; GEM_PATH =' /home/git/.rvm/gems/ruby-1.9.3-p429:/home/git/.rvm/gems/ruby-1.9.3-p429@global'

导出MY_RUBY_HOME; MY_RUBY_HOME =' /home/git/.rvm/rubies/ruby-1.9.3-p429'

出口IRBRC; IRBRC =' /home/git/.rvm/rubies/ruby-1.9.3-p429/.irbrc'

取消设置MAGLEV_HOME

取消设置RBXOPT

在crontab脚本中:

cd / home / git / gitlab /

来源$ HOME / .bash_profile

来源$ HOME / .bashrc

捆绑exec rake gitlab:backup:创建RAILS_ENV =生产