Supervisord не запускает убитые процессы

Я supervisord установлен на моем Ubuntu 10.04, и он постоянно запускает процесс Java и должен исцелять (перезагружать) процесс, когда он каким-то образом умирает или падает.

на htop Я отправить сигнал SIGKILL, прекращается, сигнал 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) 

At 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 как службу, чтобы она автоматически запускалась при перезагрузке всей системы?

1 ответов


попробуйте 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

для получения дополнительной информации об уровнях выполнения.