5

私は、delayed_job プロセスを監視するために bluepill をセットアップしました。

Ubuntu 12.04 を使用しています。

Ubuntu のupstart. 私のupstart configは以下です(/etc/init/bluepill.conf)。

description "Start up the bluepill service"

start on runlevel [2]
stop on runlevel [016]

expect fork
exec sudo /home/deploy/.rvm/wrappers/<app_name>/bluepill load /home/deploy/websites/<app_name>/current/config/server/staging/delayed_job.bluepill

# Restart the process if it dies with a signal
# or exit code not given by the 'normal exit' stanza.
respawn

expect daemonの代わりに試してみましたexpect forkexpect...また、行を完全に削除しようとしました。

マシンが起動すると、bluepill が正常に起動します。

$ ps aux | grep blue
root      1154  0.6  0.8 206416 17372 ?        Sl   21:19   0:00 bluepilld: <app_name>

ここでは、bluepill プロセスの PID は 1154 です。しかしupstart、間違った PID を追跡しているようです。

$ initctl status bluepill
bluepill start/running, process 990

これにより、kill -9.

さらに、間違った PID が追跡されているため、再起動/シャットダウンがハングするだけで、毎回マシンをハードリセットする必要があると思います。

ここで何が問題になる可能性がありますか?

4

1 に答える 1

0

明らかに、upstart は間違った PID を追跡します。bluepillのソース コードを見ると、daemons gem を使用してデーモンし、2 回フォークします。したがってexpect daemon、upstart configでは正しい PID を追跡する必要がありますが、既に試しています。

可能であれば、フォアグラウンドでbluepillを実行し、upstart 構成でexpectスタンザをまったく使用しないでください。

ブルーピルのドキュメントから:

Bluepill.application("app_name", :foreground => true) do |app|
  # ...
end

フォアグラウンドでbluepillを実行します。

于 2014-04-26T22:12:45.337 に答える