2016-05-13 8 views
0

ローカルサーバ(ubuntu)では、私はrubyで書かれたfoodsoftプログラムをインストールしました。それはまた、バンドラ、mysqlを使用しています。cronjobは正しくスクリプトを実行しません

#!/bin/sh 
export DISPLAY=:0 
export LANG=de_DE.utf8 
ip_adr=$(/bin/hostname -I) 
if [ $(pidof ruby) ] 
then 
echo "online" 
else 
echo "offline" 
cd /home/jondal/foodsoft 
RAILS_ENV=production bundle exec rails s -b $ip_adr 
fi 

を私はシェルでスクリプトを実行すると、すべての:それは実行されない場合 foodsoftはfoodsoft開始し、私もshスクリプトをプログラムしている

RAILS_ENV=production bundle exec rails s -b 192.168.0.15 

コマンドで起動することができます正常に動作します。しかし、私のcronjob(crontabにリストされている)は完全にスクリプトを実行しません。これは、次のtxtファイルを生成します。

offline 
bundler: command not found: rails 
Install missing gem executables with `bundle install` 

私は接頭辞のenv -iとシェルにshスクリプトを起動した場合、私は、次を得る:

オフライン は/ usr/local/binに/バンドル:23:load': cannot load such file -- /usr/share/rubygems-integration/1.9.1/gems/bundler-1.3.5/bin/bundle (LoadError) from /usr/local/bin/bundle:23:in '

私は何ができるのですか?

+0

rvmを使用していますか? crontabを使ってrvmをうまく動かすには、いくつかの追加ステップが必要になるかもしれません。 –

+0

'cron'ユーザは'/home/jondal/foodsoft'ディレクトリにアクセス権を持っていますか?具体的には、特に 'bin /'の中で権限を正しく実行していますか? –

答えて

0

伝えるのは難しいですが、env -iを実行して、診断がbiaisedすることができる、env -iはおそらくあなたに素敵な$PATHを与えるだろうが、crontabの中$PATHは道よりミニマルあり、man 5 crontabを引用:

PATHです"/ usr/bin:/ bin"に設定します。 man 5 crontabEXAMPLEセクションであなたを与えるとして、あなたのcrontabの上部に

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 

を、再度実行してください:

は、だから、置いてもよいです。しかし、最小限のPATHで bundleがどのように見つかったのかは説明していませんが、/ usr/binには bundleですか?

あなたはcrontabを使用していますか?そうであれば、唯一変化するのは環境だけです。PATHが十分でない場合は、env > /tmp/my.envをcrontabに入れてenvとcrontabのenvを比較することをお勧めします。

関連する問題