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
для получения дополнительной информации об уровнях выполнения.