0

4時間ごとにrakesunspot:reindex RAILS_ENV=productionコマンドを実行したい。これを実現するために、シェルプログラミングを使用して簡単なbashスクリプトを作成しました。ターミナルで正常に実行できますが、crontabで実行しようとすると、機能しません。使用しているオペレーティングシステムはcentosです。

これが私のbashスクリプトコードです

#!/bin/bash
#export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH=/usr/local/rvm/gems/ruby-1.9.2-p290/bin:/usr/local/rvm/gems/ruby-1.9.2-p290@global/bin:/usr/local/rvm/rubies/ruby-1.9.2-p290/bin:/usr/local/rvm/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:
echo "started"
cd /var/www/html/spotchase2
pwd
source /usr/local/rvm/environments/ruby-1.9.2-p290
bundle install
if [ "$?" = 0 ]; then
    echo `date`
fi
source /usr/local/rvm/environments/ruby-1.9.2-p290
#/usr/local/rvm/gems/ruby-1.9.2-p290/bin/rake sunspot:reindex RAILS_ENV=production
rake sunspot:reindex RAILS_ENV=production
if [ "$?" = 0 ]; then
    echo "complete"
fi

この問題を解決するのを手伝ってください。

編集

出力された1つのテキストファイルをリダイレクトしています。そのテキストファイルはまだ始まったばかりで、インストールと日付をバンドルします。完全なメッセージが表示されないため、メッセージが機能しておらず、そのテキストファイルでエラーが発生していないことがわかりました。

この問題を解決するのを手伝ってください。

4

1 に答える 1

2

通常、私はこのようなものを処理するためにいつでも宝石を使用します。bashスクリプトを作成する必要はありません。rakeスクリプトで十分です。Whenevercrontabの正しい構文を生成します。

私のプロジェクトには、常にバックグラウンドで実行する必要のあるスクリプトがいくつかあります。contabファイルを生成するコマンドは次のとおりです。

whenever --update-crontab --set environment=production --load-file config/schedule_client.rb --user ubuntu

そして、それはこのようなものに生成されます。

0 2 * * * /bin/bash -l -c 'source /home/ubuntu/.rvm/scripts/rvm && cd /var/www/yoolk_statistics_api && RAILS_ENV=production bundle exec rake statistics:generate_clienst --silent >> log/client.log 2>&1'

crontabが常に機能するように、出力をログファイルにリダイレクトして、実行されているかどうかを確認します。私のubuntuサーバーでは、通常、syslog fileデバッグ用にをチェックします。

于 2012-05-30T14:41:07.863 に答える