2011-10-26 21 views
6

Tengo supervisord instalado en mi Ubuntu 10.04 y ejecuta un proceso de Java continuamente y se supone que sanará (recargará) el proceso cuando de alguna manera fallezca o falle.Supervisord no inicia los procesos eliminados

En mi htop envío SIGKILL, SIGTERM, SIGHUP, señales SIGSEGV a ese proceso Java y ver /etc/logs/supervisord.log archivo y que dice.

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

En 08:38 que matan el proceso con SIGSEGV. ¿Cómo es que se sale con el código 0 y por qué no se reinicia el dispositivo supervisord?

Toda mi supervisord.conf sobre este programa específico es el siguiente:

[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 

proceso funciona muy bien cuando inicio supervisord, sin embargo no lo curaran.

¿Por cierto alguna idea de cómo comenzar a supervisar como un servicio para que se inicie automáticamente cuando todo el sistema se reinicia?

Respuesta

11

Pruebe la configuración autorestart=true. De forma predeterminada, autorestart se establece en "inesperado", lo que significa que solo reiniciará un proceso si existe con un código de salida inesperado. Por defecto, se espera el código de salida 0.

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

Usted puede utilizar el programa chkconfig para asegurarse de que el supervisor se inicia en el reinicio.

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

Se puede ver que está habilitado para los niveles de ejecución 2-5 por defecto cuando lo instalé.

$ man 7 runlevel 

para obtener más información sobre los niveles de ejecución.

+0

Muy impresionante! Estaba buscando esta configuración 'autorestart'. Esperaba que fuera 'verdadero' por defecto y luego me perdí en la documentación. Por cierto creo que 'chkconfig' requiere un proceso a ser un servicio, sin embargo' supervisord' no es un servicio, por lo tanto, que 'comando chkconfig -l' no funciona en mí y dice' supervisor de: servicio' no reconocido. ¿Qué piensas para eso? –

+1

¿Cómo instaló el supervisor? Si usa apt-get, entonces se instala como un servicio, al menos para Ubuntu 10.04. –

+0

Fue en 10.04 y creo que lo instalé usando 'easy_install'. gracias por notar eso. –

Cuestiones relacionadas