Problemas ao executar o script do Upstart na inicialização do servidor

0

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?

    
por Sam Parsons 22.08.2016 / 19:52

1 resposta

0

Eu descobri a solução. Meu script Python dependia do MySQL, então eu precisava ter certeza de que o MySQL informava o Upstart quando ele começou a rodar, adicionando initctl emit mysql-started a /etc/init.d/mysqld .

E, no meu script inicializável, posso usar start on started mysql-started em vez de start on runlevel [2345] .

    
por 23.08.2016 / 16:01