スクリプトを使用して Resque ワーカーを起動すると機能せず、手動で起動すると機能します。

スクリプトを使用して Resque ワーカーを起動すると機能せず、手動で起動すると機能します。

私のプロセスがスクリプトを介して起動した場合は機能しませんが、手動で起動すると正しく動作する理由を理解しようとしています。

詳細は次のとおりです。

script は resque ジョブ開始スクリプトです。スクリプトの場所は /etc/monit/conf.d/start_resque.sh です。権限は755で、Ubuntu所有:ubuntu

スクリプトを実行すると、ログ出力にpidが表示され、「オペレーターip-xx-xxx-xxx-xx:26732(またはすべてのpid)が起動中です」と表示されますが、ps aux | grep 26732では何も表示されません。 。 Railsプロジェクトディレクトリで同じコマンドを手動で実行すると、同じ「ワーカーの開始」出力が表示され、プロセスが実際に開始され、実行を続けます。 1つの注意点は、手動で実行すると「nohup:無視された入力」という追加の出力が表示されることです。

誰かを助けることができるもう1つの質問は、Behind = yesが実際に私の労働者を保護しない理由です。だから私はnohupを使っていましたが、うまくいくようです。

私のスクリプトは次のとおりです(cdの後に手動で実行したコマンド)。

#!/bin/bash
echo "starting worker.."
workercount="$(ps aux | grep -c resque)"
currentdir="/var/www/apps/myapp/current"
logdir=$currentdir/log/resque_worker.log
pidfile=$currentdir/tmp/pids/resque_worker_$workercount.pid
cd $currentdir
nohup bundle exec rake environment resque:work RAILS_ENV=production QUEUE='*' VERBOSE=1 PIDFILE=$pidfile >> $logdir 2>&1 &
echo "started worker $workercount! view log at $logdir. view pidfile at $pidfile"

ssh追加の注意:Ubuntu 12.04でスクリプトと手動コマンドを実行すると接続されます。

ベストアンサー1

まあ、私はSidekiqに切り替えましたが、「ちょうど動作します」。再要求と展開に多くの時間が無駄になったが、経験を積んでシステム管理技術が大幅に向上しました。 Sidekiqがより良い選択のようです。スレッドを活用し、素晴らしいWiki、更新されたWebインターフェイス、プロのオプション、ホームページに非常にクールな忍者アイコンがあります。

おすすめ記事