Como diagnosticar erros do Upstart?

8

Eu tenho um arquivo conf Upstart em / etc / init que começa bem se eu iniciá-lo manualmente assim:

sudo initctl start myconf

Se eu o executar sem o comando sudo, recebo o erro name = (unset) error, que é devido aos privilégios de usuário, mas isso não deve ser o problema quando o job é inicializado na inicialização do sistema quando o Upstart entra em ação ? (porque isso é tudo executado pela raiz).

O conteúdo do script é:

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

exec /spatial/server_init.sh

... onde o server_init.sh executa um servidor baseado em script python. Quando eu verifico o status do script logo após o login no shell, ele diz "parar / esperar". Eu também tentei o arquivo conf com "start on net-device-up", mas nada muda. Existe uma maneira de ver o log do sistema Upstart ou algo semelhante que possa me ajudar a depurar o problema.

Obrigado

    
por U2ros 27.10.2012 / 14:06

3 respostas

13

Tente:

/var/log/upstart/JOBNAME.log

Você pode querer considerar convertê-lo em uma tarefa enquanto a depura.

start on spatial-start

task

exec /spatial/server_init.sh

do console:

initctl emit spatial-start
initctl status spatial-start
    
por ppetraki 30.10.2012 / 20:34
1

Certo, encontrado de uma maneira, mas só funciona se o erro ocorrer no programa que está sendo executado pelo script (e se esse programa, é claro, retornar mensagens de erro), não em Upstart, mas é o que eu precisava este caso. O que eu fiz foi redirecionar a saída do programa para um arquivo de log como este:

exec /spatial/server_init.sh >> /spatial/ogc.log 2>&1

Quanto ao outro, eu descobri que você pode aumentar o verbosidade do Upstart, então, se eu precisar disso, vou começar a partir daí.

    
por U2ros 30.10.2012 / 20:20
0
  1. Verifique se o diretório upstart existe: / var / log / upstart (se não, crie o diretório)
  2. Verifique sua versão inicial clicando em: initctl version ou apt-cache policy upstart

    Para todas as versões do Upstart anteriores à v1.4, o valor padrão do console era console none . A partir do Upstart 1.4, o valor padrão é log do console .

  3. Adicione o log do console ao seu início (antes da fase do script)
  4. Seu log será em: / var / log / upstart / "upstart-JOBNAME" .log

Exemplo:

log do console

script

exec /spatial/server_init.sh

script final

Log do console - Conecta a entrada padrão a / dev / null. A saída padrão e o erro padrão são conectados a uma extremidade de um pseudo-terminal, de modo que qualquer saída da tarefa seja registrada automaticamente em um arquivo no diretório / var / log / upstart / para Jobs do sistema e $ XDG_CACHE_HOME / upstart / (ou $ HOME /. cache / upstart / se $ XDG_CACHE_HOME não estiver definido) para trabalhos de sessão.

Console nenhum - Conecta os descritores padrão de entrada, saída padrão e erro padrão do trabalho a / dev / null.

Para mais informações sobre o console, veja o link abaixo:

link

    
por zachlaniado 05.07.2017 / 09:08

Tags