Provavelmente, seu problema é que o que você considera startup
não é o que o upstart usa. A inicialização é um dos primeiros eventos emitidos durante a inicialização do script de inicialização do sistema. Então você pode estar perdendo coisas como pilha de rede e drivers, sistemas de arquivos, quase tudo realmente. Releia a manpage cuidadosamente sobre o significado do evento de inicialização, e também o que começou também.
Este é o processo que uso para verificar e testar serviços iniciantes.
Primeiramente, verifique sua configuração:
# silent if the config is valid
initctl check-config sonar
# reload the configuration to pick up latest changes
initctl reload-configuration
Eu também adiciono um script - que é executado em startup
- para alternar o upstart para o modo de log de depuração:
sudo -s
cat <<EOCONF > /etc/init/upstart-debug.conf
description "enable debugging of upstart from within"
author "@dch__"
version "0.1"
start on startup
task
exec initctl log-priority debug
Como é uma tarefa, ele é executado apenas uma vez. O resultado agora é que você obtém muito mais detalhes em /var/log/dmesg
- apenas | grep init:
para o histórico.
Para o seu trabalho inicial específico, altero o seguinte:
- para daemons normais de usuário Eu corro
start on started networking and filesystem
, o que funciona com sucesso em Quantal e Precise, mas provavelmente não em versões anteriores. - use um caminho absoluto em vez de um relativo.
- verifique se seu script sonar.sh ou daemonises, em caso afirmativo, você precisará adicionar
expect fork
ouexpect daemon
como uma estrofe. - finalmente, salpique as instruções
emit ...
stanzas ou shellecho here
nos scripts pré-exec e exec e verifique essa saída no/var/log/upstart/sonar.log
correspondente.