Serviço Python usando o Upstart no Ubuntu

5

Eu quero criar para implantar um serviço de heartbeat (um script python) como um serviço usando o Upstart.

Meu entendimento é que devo adicionar um /etc/init/myheartbeatservice.conf com o seguinte conteúdo.

# my heartbeat service 

description     "Heartbeat monitor"

start on startup
stop on shutdown

script
    exec /path/to/my/python/script.py
end script 

Meu script inicia outro processo de serviço e monitora os processos e envia pulsação para um servidor externo regularmente. São startup e shutdown os eventos corretos? Além disso, meu script cria um novo segmento. Eu estou supondo que eu também precise adicionar fork daemon ao meu arquivo conf?

Obrigado.

    
por Soumya Simanta 03.04.2012 / 12:10

1 resposta

5

startup é o evento que o upstart emite no início de sua execução. Para a maioria dos serviços, isso é cedo demais. Coisas que você talvez não tenha no momento:

  • rede para procurar nomes de host em DNS ou avahi (você pode não ter isso de qualquer maneira, se for um sistema móvel, você nunca pode contar com isso, mas, para servidores, as coisas são diferentes)
  • um sistema de arquivos para gravar (não é gravável até depois de ter sido verificado)
  • / usr para ler o python! (às vezes o / usr está em uma partição separada).

shutdown na verdade não é um evento, embora isso seja realmente discutido como um para usar em futuras versões.

Neste momento, sua melhor aposta é manter o antigo modo unix e usar runlevels para controlar quando iniciar e parar.

start on runlevel [2345]
stop on runlevel [^2345]

Os níveis de execução são a maneira antiga de identificar em que estado o sistema está. [2345] é apenas um conjunto de todos os níveis de execução usados para o modo "vários usuários", que mesmo em um laptop significa sistema normal de trabalho. Se você usar isso, poderá contar com coisas como o sistema de arquivos e qualquer rede estática para estar ativa. 99% de todos os trabalhos iniciantes devem usar essas duas condições de início / parada.

Com a parada ativada, se o sistema entrar em qualquer nível de execução não 2,3,4 ou 5, o upstart interromperá o serviço. O nível de execução 0 é para parada e 1 é para "modo de manutenção do sistema". 6 é para o rebote.

Eventualmente, adicionaremos nomes melhores para essas abstrações, mas elas sempre funcionarão.

Além disso, você não precisa de script ou end script . A palavra-chave exec simplesmente executará seu programa diretamente. Isso reduzirá alguns milissegundos de tempo porque você não precisará executar / bin / sh e analisar a linha exec ... , já que o upstart já terá analisado o arquivo de trabalho.

    
por SpamapS 12.04.2012 / 23:08