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.