Como faço para depurar um trabalho iniciante?


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 eu começo o trabalho com sudo service collector start, trava. Se eu ctrl-c e corra initctl listEu vejo isso:

collector start/killed, process 616

Não consigo ver uma instância do twistd daemon no 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 de uma linha usando uma script stanza, e ainda não funciona. Eu acho que estou fazendo algo muito errado. O que poderia ser?


Nenhuma resposta, mas estou lutando com um problema semelhante. Pode até ser um bug no Upstart: bugs.launchpad.net/ubuntu/+source/upstart/+bug/438313 Eu não sei como sair desse estado suspenso e reinicializar. Também acredito que tem a ver com o expect daemon linha.
harm

Respostas:


12

Você pode redirecionar stdout e stderr de todo o shell usando o script pragma (em vez de exec ) em conjunção com exec >FILE 2>&1, igual a:

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

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

Por outro lado, se service está pendurado, poderia nem mesmo está atingindo o seu script, caso em que nada disso ajudará, é claro.


Thanos, isso me colocou no caminho certo. No final eu canalizo a saída para logger, para que eu pudesse simplesmente seguir /var/log/syslog.
Cera

Além disso, erros no próprio arquivo conf são mostrados dmesg. Eu descobri isso depois que eu não estava recebendo nenhuma saída ao usar o acima. Eu tinha cometido um erro de digitação na diretiva chdir.
codingFoo

Onde você coloca esse código?
kev


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.