Eu tenho um script Upstart que usa o seguinte código:
start on runlevel [2345]
stop on runlevel [!2345]
respawn
env PYTHONPATH=$PYTHONPATH:/opt/lrms/lib/python2.6/site-packages
exec python /opt/foo_service/src/foo/foo.py >> /var/log/foo.log 2>&1
pre-start script
echo "['date'] - Starting Foo Service..." >> /var/log/foo.log
end script
pre-stop script
echo "['date'] - Stopping Foo Service..." >> /var/log/foo.log
end script
post-stop script
echo "['date'] - Post-Stop Stanza..." >> /var/log/foo.log
end script
Eu posso facilmente iniciar e parar este serviço usando start foo
ou stop foo
. No entanto, quando eu reinicio o servidor e verifico o status do meu serviço, ele está em stop/waiting
.
Eu, então, verifico os logs, e vejo isso (estes são os eventos que ocorreram com este script upstart durante a inicialização):
[Mon Aug 22 12:20:34 EDT 2016] - Starting Foo Service...
[Mon Aug 22 12:20:35 EDT 2016] - Post-Stop Stanza...
[Mon Aug 22 12:20:35 EDT 2016] - Starting Foo Service...
[Mon Aug 22 12:20:35 EDT 2016] - Post-Stop Stanza...
[Mon Aug 22 12:20:35 EDT 2016] - Starting Foo Service...
[Mon Aug 22 12:20:35 EDT 2016] - Post-Stop Stanza...
[Mon Aug 22 12:20:35 EDT 2016] - Starting Foo Service...
[Mon Aug 22 12:20:36 EDT 2016] - Post-Stop Stanza...
[Mon Aug 22 12:20:36 EDT 2016] - Starting Foo Service...
[Mon Aug 22 12:20:36 EDT 2016] - Post-Stop Stanza...
[Mon Aug 22 12:20:36 EDT 2016] - Starting Foo Service...
[Mon Aug 22 12:20:36 EDT 2016] - Post-Stop Stanza...
[Mon Aug 22 12:20:36 EDT 2016] - Starting Foo Service...
[Mon Aug 22 12:20:36 EDT 2016] - Post-Stop Stanza...
[Mon Aug 22 12:20:36 EDT 2016] - Starting Foo Service...
[Mon Aug 22 12:20:36 EDT 2016] - Post-Stop Stanza...
[Mon Aug 22 12:20:36 EDT 2016] - Starting Foo Service...
[Mon Aug 22 12:20:37 EDT 2016] - Post-Stop Stanza...
[Mon Aug 22 12:20:37 EDT 2016] - Starting Foo Service...
[Mon Aug 22 12:20:37 EDT 2016] - Post-Stop Stanza...
[Mon Aug 22 12:20:37 EDT 2016] - Starting Foo Service...
[Mon Aug 22 12:20:37 EDT 2016] - Post-Stop Stanza...
Isso implica para mim que o script upstart está falhando, considerando que a estrofe pré-parada não está sendo executada e que ele foi reproduzido várias vezes.
Meu próximo palpite é que o script Python pode depender de algo que não está sendo executado atualmente quando o script upstart está sendo iniciado. O serviço Python captura eventos do ActiveMQ e os armazena no MySQL. Eu tentei editar o script Upstart para que ele seja executado quando o MySQL estiver pronto, mas isso não gerou nada no arquivo de log.
Estou correto em assumir que este é provavelmente um problema com o serviço Python, dependendo de algum outro serviço em execução? Como devo proceder para depurar este problema?