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 =(