Como depurar scripts do Upstart?

67

Por algum motivo, estou recebendo um erro durante as atualizações do app , a causa dos quais é

% sudo service apport start
start: Job failed to start

Sob o sysvinit, eu poderia depurar esse tipo de problema executando eg

sudo sh -x /etc/init.d/whatever start

mas isso não parece mapear para o Upstart. O que devo tentar em seguida?

Acontece que há uma solução alternativa que permitirá que o instale prosseguir. Mas ainda estou interessado na questão geral de como alguém poderia rastrear o script.

    
por poolie 21.04.2011 / 02:01

2 respostas

29

Todas as informações a seguir (e muito mais úteis na ajuda do Upstart) são do The Cookbook do Upstart . Seção 18 abrange a depuração. link

Neste caso específico de rastreamento de uma estrofe de "script" de um trabalho do Upstart você deve adicionar as seguintes linhas logo abaixo da palavra "script":

exec 2>>/dev/.initramfs/myjob.log
set -x

A razão para a localização ímpar é que /dev/.initramfs/ está disponível no início muito cedo, antes que o sistema de arquivos raiz tenha sido carregado e continue disponível após a inicialização. Eu estou supondo que com o suporte, no entanto, você provavelmente não precisa usar esse caminho. Ainda assim, é bom saber a opção.

Também deve ser notado que todos os scripts são executados com set -e , portanto, qualquer comando que falhar sairá do script completamente. O que faz sentido, como se deve ter muito cuidado ao executar scripts como root.

Eu recomendo altamente consultar o Cookbook Upstart acima, em geral, para quem trabalha com trabalhos Upstart.

    
por Mark Russell 21.04.2011 / 02:52
109

Upstart registra sua execução de serviço em um arquivo de log com o mesmo nome em /var/log/upstart/your-service-name.log . Deve ser útil.

    
por Muhammad Gelbana 02.09.2012 / 17:32