私はバックグラウンドで実行する必要があるいくつかのレーキタスクがあります。私はrbenv
を使ってRubyのバージョンを管理しています。supervisord
はタスクを実行し、bundle
は正しいGemバージョンを使用しています。各タスクのための私のsupervisordの設定は次のようになります。bundle execを実行しているときに、 "ps aux"で完全なコマンドを表示する方法
[program:data-importer]
command=/home/ubuntu/.rbenv/bin/rbenv exec bundle exec rake import:data
environment=RAILS_ENV=production,PATH=/home/ubuntu/.rbenv/shims:%(ENV_PATH)s,PRODUCTION=true
directory=/home/ubuntu/app/current
user=ubuntu
stdout_logfile=/var/log/app/%(program_name)s-out.log
stderr_logfile=/var/log/app/%(program_name)s-err.log
autostart=true
私はまた私のインフラを監視するためにconsul
を使用している、と私は、これらのスクリプトが実行されていることを確認するために、領事チェックを使用しています。チェックは、以下に示す、非常にシンプルなbashスクリプトを呼び出します。
#!/bin/bash
if ps -ef | grep [i]mport:data | grep -v running; then
echo "data importer running"
exit 0
else
echo "data importer not running"
exit 2
fi
これらのチェックが失敗し始めたとき、これらのスクリプトは、数日前まではうまく動作していました。問題は、ps -ef
を実行すると、リストされたプロセスにimport:data
が含まれていないことです。
ubuntu 30450 ... /home/ubuntu/.rbenv/versions/2.3.1/bin/rake
実際にマシン上で変更されたものはありません。Rubyバージョンのみです。私たちは2.2.2を使い、先週の金曜日に2.3.1にアップグレードしました。 Rubyのアップグレード後に新しいバージョンをインストールしたので、それがバンドラの問題だと私は思うのです。
日曜日までは問題は見られませんでしたが、以前は見たことがない可能性があります。
誰もがこれを手伝ってくれますか?私はあなたがすくいコールの前後に引用符を配置する必要があり-ef psの中に所望の出力を得るためにしばらくの間、今:(