0

Resque ワーカーを管理するように Monit をセットアップしようとしていますが、ユーザー/home/deployer/.rbenv/shims/bundle: line 4: exec: rbenv: not found としてコマンドを実行していることを確認したと表示されませんdeployer。コマンドを SSH 経由で直接コピー アンド ペーストすると、すべて正常に動作します。以下は私のMonit構成です。ありがとう!

プロセス resque_worker_1 をチェック
  pidfile CURRENT_PATH/tmp/pids/resque_worker_1.pid を使用
  start program = "/usr/bin/env HOME=/home/deployer RACK_ENV=production PATH=/home/deployer/.rbenv/shims:/usr/local/bin:/usr/local/ruby/bin:/usr/ bin:/bin:$PATH /bin/sh -l -c 'cd CURRENT_PATH; bundle exec rake 環境 resque:work RAILS_ENV=production QUEUE=high,normal,low VERBOSE=1 PIDFILE=CURRENT_PATH/tmp/pids/resque_worker_1.pid >> CURRENT_PATH/log/resque_worker_.log 2>&1'"
    uid deployer および gid admin として
  stop program = "/bin/sh -c 'cd CURRENT_PATH && kill -9 $(cat tmp/pids/resque_worker_1.pid) && rm -f tmp/pids/resque_worker_1.pid; exit 0;'"
    uid deployer および gid admin として
  totalmem が 10 サイクルで 300 MB を超えている場合は、再起動します # メモリを食い尽くす?
  グループ resque_workers
4

3 に答える 3

1

これが役立つかどうかはわかりませんが、monitrcのスタートラインで、最初に実行したいユーザーにsuする必要があります。uidフラグとgidフラグを使用して、それがうまく機能するかどうかを確認しようとしたことはないので、これは答えのガチョウの追跡かもしれません。

私はあなたと同じ問題を抱えていたことを覚えています...すべてがコマンドラインから機能しましたが、monitがそのことを行うときはそうではありませんでした。

たとえば、私のmonitrcでは、次のようにarsendmailを監視しています。

#arsendmail_rails3
#Railsアプリからメールを監視して送信するデーモン
プロセスar_sendmailをpidfile/var/www/rak/log/ar_sendmail.pidで確認します
プログラムの開始"/bin / su --mike && / bin / bash -c'cd / var / www / rak && ar_sendmail_rails3 -b1000 -d -eproduction'"
プログラムの停止"/bin / ps -ef | / bin / grep ar_sendmail_rails3 | / bin / grep -v grep | / usr / bin / awk'{/ usr / bin / print $ 2}' | / usr / bin / xargs / bin / kill -9 "
于 2012-08-27T22:00:14.433 に答える