8

Ubuntu 10.04にsupervisordインストールしましたが、Javaプロセスを継続的に実行し、何らかの理由で停止またはクラッシュしたときにプロセスを修復(リロード)するはずです。

私のhtop場合、SIGKILL、SIGTERM、SIGHUP、SIGSEGVシグナルをそのJavaプロセス/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は次のとおりです。

[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

Supervisord を起動すると、プロセスは正常に動作しますが、修復されません。

ところで、システム全体の再起動時に自動的に起動するように、supervisord をサービスとして起動する方法はありますか?

4

1 に答える 1

13

設定してみてくださいautorestart=true。デフォルトでは、自動再起動は「予期しない」に設定されています。これは、予期しない終了コードで終了した場合にのみプロセスを再起動することを意味します。デフォルトでは、終了コード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

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

于 2011-10-28T16:09:03.650 に答える