Upstart, sem feedback se o início falhou

2

Eu tenho um daemon em / opt / xyz / bin / xyz. Infelizmente, não pode entrar em segundo plano e não poderá fazê-lo no próximo semestre. Meu problema é o seguinte: entrar

service xyz start

apenas retorna

xyz start/running, process 23484

Sempre, mesmo quando sai imediatamente com o código de saída 1. Minha configuração é esta:

$ cat /etc/init/xyz.conf
description "XYZ"

start on started networking
stop on shutdown

exec /opt/xyz/bin/xyz

O resto funciona bem. O Upstart reconhece quando o processo já foi iniciado, parando de funcionar também.

Alguma sugestão?

    
por user694971 18.10.2011 / 12:54

1 resposta

1

Você precisa de uma sub-rotina de pós-inicialização que consultará o serviço para saber se ele está ou não fornecendo o serviço esperado. Então, algo parecido com

post-start script
  for try in 1 2 3 4 5 ; do
    if xyzadmin --ping ; then
      exit 0
    fi
    sleep 1
  done
  logger -t xyz-upstart -p daemon.err "failed to start within $try seconds, aborting"
  exit 1
end script

Ao adicionar a capacidade de daemonizar seu serviço, se possível, certifique-se de que ele não bifurque até que esteja pronto para lidar com as solicitações, então 'esperar bifurcação' atrasará a condição 'iniciada' corretamente, caso contrário você ainda precisa deste pós-início.

    
por 17.01.2012 / 01:17