2011-10-26 15 views
6

私はsupervisordを私のUbuntu 10.04にインストールしています。それはJavaプロセスを連続して実行し、何らかの形で死んだりクラッシュしたときにプロセスを回復(リロード)する予定です。私htopスーパーバイザはプロセスを強制終了しません

私はそのJavaプロセスにSIGKILL、SIGTERM、SIGHUP、SIGSEGV信号を送信し、/etc/logs/supervisord.logファイルを見て、それが言います。

08:09:46,182 INFO success: myprogram entered RUNNING state,[...] 
08:38:10,043 INFO exited: myprogram (exit status 0; expected) 

08:38私はSIGSEGVでプロセスを終了します。どのようにコード0で終了したのですか?supervisordはまったく再起動しません。次のように、この特定のプログラムについて

すべての私のsupervisord.confがある:私はsupervisordを起動したとき

[program:play-9000] 
command=play run /var/www/myprogram/ --%%prod 
stderr_logfile = /var/log/supervisord/myprogram-stderr.log 
stdout_logfile = /var/log/supervisord/myprogram-stdout.log 

プロセスは本当にうまく動作します、しかし、癒されません。

ところで、システム全体がリブートしたときに自動的に起動するようにスーパーバイザをサービスとして起動する方法はありますか?

答えて

11

autorestart=trueを設定してみてください。デフォルトでは、autorestartは "unexpected"に設定されています。これは、予期しない終了コードが存在する場合にのみプロセスを再起動することを意味します。既定では、終了コード0が必要です。

http://supervisord.org/configuration.html#program-x-section-settings

あなたは、スーパーバイザが再起動時に起動することを確認するのchkconfigプログラムを使用することができます。

$ sudo apt-get install chkconfig 
$ chkconfig -l supervisor 
supervisor    0:off 1:off 2:on 3:on 4:on 5:on 6:off 

インストール時に、デフォルトでランレベル2〜5が有効になっていることがわかります。

$ man 7 runlevel 

実行レベルの詳細については、

+0

非常に素晴らしい!私はこの 'autorestart'設定を探していました。私はそれがデフォルトで「真」であることを期待していました、そして、私はドキュメンテーションで迷ってしまいました。私は 'chkconfig'はプロセスをサービスにする必要があると思いますが、' supervisord'はサービスではないので、 'chkconfig -l'コマンドは私にとってうまくいかず、' supervisor:unrecognized service'と言います。あなたはそれについてどう思いますか? –

+1

スーパーバイザはどのようにインストールしましたか? apt-getを使うと、少なくともUbuntu 10.04ではサービスとしてインストールされます。 –

+0

10.04だったので、 'easy_install'を使ってインストールしたと思います。それに気づいてくれてありがとう。 –