upstart - contagem de bifurcações do supervisord> 2 (não é possível fazer com que o supervisord inicie na inicialização)

upstart - contagem de bifurcações do supervisord> 2 (não é possível fazer com que o supervisord inicie na inicialização)

estou tentando usar o upstart para que o supervisord seja iniciado automaticamente na inicialização. meu supervisord está em um ambiente virtual.

Eu configurei-o para ser executado em modo de primeiro plano com -n param e funciona se iniciado manualmente, mas se recusa a iniciar na inicialização.

Seguindo o guia aqui http://upstart.ubuntu.com/cookbook/#how-to-establish-fork-count

Estou descobrindo que o supervisor se bifurca 37 vezes.

> ~/projects/bleh_app$ sudo strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf &
[1] 5662

> ~/projects/bleh_app$ ps -ef | grep strace
root      5662  5447  0 21:02 pts/0    00:00:00 sudo strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf
root      5663  5662 36 21:02 pts/0    00:00:03 strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf
bleh     5703  5447  0 21:02 pts/0    00:00:00 grep --color=auto strace

> ~/projects/bleh_app$ sudo killall -9 strace
[1]+  Exit 137                sudo strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf

> ~/projects/bleh_app$ sudo egrep "\<(fork|clone)\>\(" /tmp/strace.log | wc | awk '{print $1}'
37

Algumas perguntas:
* Alguma idéia de por que ele não inicia no modo forground na inicialização?
* Estou determinando corretamente o número de garfos?
* alguma sugestão melhor sobre como começar a supervisionar com o upstart?

Responder1

ah cara...
comecei esse caminho a partir daqui:
Como iniciar automaticamente o supervisord no Linux (Ubuntu)
e especificamente esta resposta https://serverfault.com/a/115259/60345

"oh, incrível iniciante para supervisord .... nãããão problema"

não. É possível fazer com que o supervisord seja iniciado manualmente sem problemas, mas não é possível fazê-lo iniciar automaticamente na inicialização. A depuração parece que o supervisord é iniciado, mas é enviado instantaneamente ao SIGTERM para se encerrar. Não sei se é porque está rodando em primeiro plano.
A pergunta acima era originalmente para ver se eu poderia executá-lo com expect fork ou daemon (o que eu nunca descobri)

8 horas da minha vida depois eu encontro isso
http://upstart.ubuntu.com/cookbook/#runlevels

você basicamente deseja que seu arquivo conf inicial tenha a seguinte aparência:

description     "supervisord"

start on (filesystem and static-network-up)
stop on runlevel [!2345]

respawn

exec /<path to>/supervisord -n -c /<path to>/supervisord.conf

digno de nota:
parar no nível de execução [!2345]
vs
parar no nível de execução [!345]

Eu queria postar essa resposta em outro tópico, mas ela está bloqueada =(

informação relacionada