2011-10-26 43 views
6

Ubuntu 10.04'ümde supervisord yüklüyüm ve bir Java işlemini sürekli olarak çalıştırıyor ve bir şekilde öldüğünde veya çöktüğünde (yeniden yükleme) işlemi iyileştirmesi gerekiyor. OnSupervisord, öldürülen işlemleri başlatmıyor

benim htop Ben sigkill, SIGTERM, SIGHUP, o Java işlemi için SIGSEGV sinyalleri ve /etc/logs/supervisord.log dosyayı izlemek ve onu diyor gönderin.

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

08:38 azından ben SIGSEGV ile işlemi sonlandır. Nasıl olurda kod 0 ile çıkılır ve neden supervisord tekrar başlamıyor?

Tüm benim supervisord.conf şöyle bu özel program hakkında: Ben supervisord başlattığınızda

[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 

Süreci gerçekten iyi çalışıyor, ancak iyileşmiş almaz.

Bu arada, süpervizörü bir hizmet olarak nasıl başlatacağınıza dair herhangi bir fikir, tüm sistem yeniden başlatıldığında otomatik olarak başlatılacak şekilde mi?

cevap

11

autorestart=true'u ayarlamayı deneyin. Varsayılan olarak, otomatik başlatma "beklenmedik" olarak ayarlanır; bu, yalnızca beklenmedik bir çıkış koduyla mevcutsa bir işlemi yeniden başlatacağı anlamına gelir. Varsayılan olarak, 0 çıkış kodu bekleniyor.

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

Sen gözetmen yeniden başlatmada başlar emin olmak için Chkconfig programını kullanabilirsiniz.

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

Bunu yüklediğimde, varsayılan olarak 2-5 çalışma seviyeleri için etkin olduğunu görebilirsiniz. Çalışma seviyeleri hakkında daha fazla bilgi için

.

+0

Oldukça harika! Bu “autorestart” ayarını arıyordum. Varsayılan olarak "true" olmasını bekledim ve sonra belgelerinde kayboldum. BTW Ben chkconfig' bir hizmet için bir süreç gerektirdiğini düşünüyorum, ancak 'süpervisord' bir hizmet değildir, bu nedenle 'chkconfig -l' komutu benim üzerimde çalışmıyor ve 'süpervizör: tanınmayan hizmet' diyor. Bunun için ne düşünüyorsun? –

+1

Süpervizörü nasıl kurdunuz? Apt-get'i kullanırsanız, en azından Ubuntu 10.04 için bir hizmet olarak yüklenir. –

+0

10.04'tü ve sanırım 'easy_install' kullanarak kurdum. bunu fark ettiğin için teşekkürler. –

İlgili konular