Como testar o recurso UPSTART do Ubuntu para ver meu script ser reiniciado automaticamente se ele for morto?

3

Estou executando meu script Python usando o recurso upstart do Ubuntu, de modo que, se por qualquer motivo meu script Python morrer ou for morto, ele poderá ser reiniciado automaticamente.

Então eu decidi usar o recurso UPSTART do Ubuntu para reiniciar o script Python automaticamente.

Depois de criar o arquivo testing.conf como este em /etc/init/testing.conf -

chdir /tekooz
exec python testing.py
respawn

Corri abaixo do comando sudo para iniciá-lo e vejo esse processo sendo executado usando ps ax e meu script python também está funcionando bem.

root@bx13:/tekooz# sudo start testing
testing start/running, process 27794

Este é o meu script python abaixo -

#!/usr/bin/python
import time

while True:
    print "Hello World"
    time.sleep(5)

Mas como posso testá-lo para ver se o meu script Python é morto, então ele está sendo reiniciado automaticamente? Eu não posso matar o PID como o PID continua mudando se eu faço ps ax no meu testing.py .

Alguém pode me dizer como testar esse cenário? Estou apenas tentando garantir que meu script possa ser reiniciado automaticamente se for morto ou morrer.

    
por arsenal 06.01.2014 / 11:38

2 respostas

5

Basta executar:

sudo status testing

que lhe dá o status do serviço de arranque inicial.

E com tail -f /var/log/syslog , você pode ver se está reaparecendo.

O "Hello World" acontece, acho que não vou a lugar nenhum.

Eu recomendo testar com:

#!/usr/bin/python
import time
import os

with open('/var/tmp/testing.log', 'a') as fp:
    try:
        while True:
            print >> fp, "Hello World", os.getpid()
            fp.flush()
            time.sleep(5)
    except Exception as e:
        print >> fp, 'exception', e
        fp.flush()
        raise

e execute tail -f /var/tmp/testing.log em outra janela.

    
por 06.01.2014 / 11:46
4

Primeiro, por que o PID está mudando? Isso não faz sentido. Se você matar o processo e ver a alteração do PID, isso significa que foi reiniciado como esperado. Se você não está matando o script, mas o PID muda independentemente, então seu script está sendo morto por algo e está reaparecendo.

De qualquer forma, você pode matar pelo PID, pelo nome ( sudo pkill testing.py ) ou matando todos os processos python em execução (drástico, mas supondo que seja o único executando você deve estar bem): sudo killall python .

    
por 06.01.2014 / 11:45