Como diagnosticar erros do Upstart?

8

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

sudo initctl start myconf

Se eu executá-lo sem o comando sudo, recebo o erro name name = (unset), que é devido aos privilégios do usuário, mas esse não deve ser o problema quando o trabalho é inicializado na inicialização do sistema quando o Upstart é iniciado? (porque é 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 verifico o status do script logo após o login no shell, ele diz para / espera. 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

U2ros
fonte
Às vezes, se você tem um chdirem seu script arrivista e que dir não existe, nenhum log será escrito e você terá a mensagem enigmática:start: Job failed to start
knownasilya

Respostas:

13

Tentar:

/var/log/upstart/JOBNAME.log

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

iniciar no início espacial

tarefa

exec /spatial/server_init.sh

depois a partir do console:

initctl emitem início espacial
status initctl spatial-start
ppetraki
fonte
Também vai tentar, obrigado. Presumo que isso realmente produza problemas específicos do Upstart; inclui também erros de sintaxe em arquivos conf?
U2ros
É aqui que o stdout / err é redirecionado, portanto é melhor que seja detalhado.
ppetraki
1

Ok, encontrei uma maneira, mas só funciona se o erro ocorrer no programa que está sendo executado pelo script (e se esse programa retornar mensagens de erro), não o Upstart em si, mas é o que eu precisava neste 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, descobri que você pode aumentar a verbosidade do Upstart; portanto, se eu precisar disso, vou começar a partir daí.

U2ros
fonte
0
  1. Verifique se o diretório inicial existe: / var / log / upstart (caso contrário, crie o diretório)
  2. Verifique sua versão inicial: versão initctl ou política de apt-cache upstart

    Para todas as versões do Upstart anteriores à v1.4, o valor padrão para o console era nenhum . No Upstart 1.4, o valor padrão é log do console .

  3. Adicione o log do console ao iniciante (antes da fase de script)
  4. Seu log estará em: /var/log/upstart/"upstart-JOBNAME".log

Exemplo:

log do console

roteiro

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 forma que qualquer saída da tarefa seja automaticamente registrada em um arquivo no diretório / var / log / upstart / para tarefas 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 none - Conecta a entrada padrão da tarefa, a saída padrão e os descritores de arquivo de erro padrão a / dev / null.

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

http://upstart.ubuntu.com/cookbook/#console-log

zachlaniado
fonte