Como depurar um job upstart?

9

Eu tenho o seguinte trabalho em /etc/init/collector :

start on runlevel [2345]
stop on runlevel [!2345]

expect daemon

exec /usr/bin/twistd -y /path/to/my/tac/file

Quando inicio o trabalho com sudo service collector start , ele trava. Se eu ctrl-c e executar initctl list , vejo isso:

collector start/killed, process 616

Não consigo ver uma instância do daemon twistd em ps, e o servidor HTTP que ele deveria estar fornecendo não existe.

Eu até tentei isso sem 'esperar daemon' e com uma simples chamada para um script bash de uma linha usando a estrofe script , e ainda não funciona. Eu acho que estou fazendo algo muito errado. O que poderia ser?

    
por Cera 23.03.2012 / 03:50

3 respostas

12

Você pode redirecionar stdout e stderr de todo o shell usando o script pragma (em vez de exec ) em conjunto com exec >FILE 2>&1 , da seguinte forma:

script
    exec >/path/to/some_log_file 2>&1
    exec your_command_here
end script

Espero que você tenha uma visão melhor do que está acontecendo. Eu achei isso útil para capturar todos os tipos de problemas em meus scripts iniciantes. Você poderia canalizar o stdout / stderr do seu comando diretamente, mas você perderá os erros originados no shell (como erros de sintaxe).

Por outro lado, se service estiver interrompido, talvez não esteja atingindo seu script, caso em que nada disso ajudará, é claro.

    
por 13.06.2012 / 07:29
2

Há também o console log declarativo, conforme definido aqui: link

Eu não sei o suficiente sobre o upstart para saber se ele está habilitado por padrão, mas você pode ativá-lo em uma base por tarefa, ele por padrão exibirá /var/log/upstart/<job>.log

    
por 10.06.2014 / 16:14
0

Valide se o diretor do upstart existe e adicione o log do console antes da fase do script. (na versão upstart superior a 1.4 é o padrão)

log do console

script

    exec > / path / para / some_log_file 2 > & 1     exec your_command_here script final

Para mais informações, consulte o tópico: link

    
por 05.07.2017 / 09:21