2011-10-26 8 views
6

Ho installato supervisord sulla mia Ubuntu 10.04 ed esegue un processo Java continuamente e si suppone che debba guarire (ricaricare) il processo quando in qualche modo muore o si blocca.Supervisord non avvia i processi uccisi

Sul mio htop mando SIGKILL, SIGTERM, SIGHUP, segnali SIGSEGV a quel processo Java e guardare /etc/logs/supervisord.log di file e che dice.

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

A 08:38 uccido il processo con SIGSEGV. Come mai è uscito con il codice 0 e perché lo supervisord non lo riavvia affatto?

Tutto il mio supervisord.conf su questo programma specifico è il seguente:

[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 

processo funziona davvero bene quando lancio supervisord, tuttavia non ottiene guarito.

Alcune idee su come avviare supervisord come servizio in modo che venga avviato automaticamente quando l'intero sistema si riavvia?

risposta

11

Provare a impostare autorestart=true. Per impostazione predefinita, l'avvio automatico è impostato su "Inatteso", il che significa che riavvierà un processo solo se esiste un codice di uscita imprevisto. Per impostazione predefinita, è previsto il codice di uscita 0.

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

È possibile utilizzare il programma chkconfig per assicurarsi che supervisore inizia il riavvio.

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

Si può vedere che è attivato per i runlevel 2-5 per impostazione predefinita quando l'ho installato.

$ man 7 runlevel 

per più informazioni livelli di esecuzione.

+0

Abbastanza impressionante! Stavo cercando l'impostazione "autorestart". Mi aspettavo che fosse "true" di default e quindi mi sono perso nella documentazione. BTW penso che 'chkconfig' richieda che un processo sia un servizio, tuttavia' supervisord' non è un servizio, quindi il comando 'chkconfig -l' non funziona su di me e dice' supervisore: servizio non riconosciuto'. Cosa ne pensi per questo? –

+1

Come hai installato il supervisore? Se si utilizza apt-get, viene installato come servizio, almeno per Ubuntu 10.04. –

+0

Era il 10.04 e penso di averlo installato usando 'easy_install'. grazie per averlo notato –