Como testar o /etc/rc.d/rc.local para garantir que um comando seja iniciado com sucesso na inicialização?

1

Estou usando o tyrantmanager para gerenciar várias instâncias de Tokyo Tyrant . Está funcionando bem.

Eu quero que ele comece na inicialização, então eu adiciono o seguinte comando em /etc/rc.local :

/usr/local/bin/tyrantmanager start --home=/data/tyrant/

(isso será OK ao fazer a partir da linha de comando)

Na semana passada, meu servidor foi interrompido e preciso redefinir. Após a inicialização, faça login e verifique se não há no instâncias do Tokyo Tyrant em execução.

Existe alguma maneira de testar para garantir que ele seja iniciado com sucesso na próxima inicialização? Exceto de redirecionar a saída e o erro para um arquivo de log com >> /var/log/tyrantmanager.log 2>&1 , o que mais eu posso fazer para 'depurar' se ele continuar falhando ao iniciar.

PS: Eu posso escrever um script de inicialização para ele, mas ainda quero examinar a causa raiz para este caso.

EDITAR: Eu testei no servidor de desenvolvimento e obtive o mesmo resultado. Abaixo está o arquivo de log:

15:02:17  INFO : Starting test : ttserver -host 192.168.x.x -port 1978 -thnum 8 -tout 15 -dmn -pid /opt/tyrant/instances/test/test.pid -log /opt/tyrant/instances/test/log/test.log -le -ulog /opt/tyrant/instances/test/ulog -ulim 1g -rts /opt/tyrant/instances/test/test.rts /opt/tyrant/instances/test/data/test.tch#opts=ld#mode=wc
/usr/local/lib/ruby/gems/1.8/gems/logging-1.5.2/lib/logging/logger.rb:429: command not found:  ttserver -host 192.168.x.x -port 1978 -thnum 8 -tout 15 -dmn -pid /opt/tyrant/instances/test/test.pid -log /opt/tyrant/instances/test/log/test.log -le -ulog /opt/tyrant/instances/test/ulog -ulim 1g -rts /opt/tyrant/instances/test/test.rts /opt/tyrant/instances/test/data/test.tch#opts=ld#mode=wc 

Eu não estou familiarizado com Ruby, então não sei por que através do "comando não encontrado" erro de logger.rb . Talvez eu faça a pergunta no stackoverflow.

    
por quanta 04.08.2011 / 12:54

3 respostas

1

Parece também:

  • O ttserver não está no caminho quando o /etc/rc.local é executado. Certifique-se de que o ambiente esteja configurado corretamente em /etc/rc.local. Como você diz, funciona na linha de comando.
  • o script ruby está chamando a cadeia de comandos inteira como um único comando sem nenhum parâmetro.

Eu suspeito que o primeiro.

    
por 05.08.2011 / 21:13
6

Não importa qual distro eu use hoje, eu aprendi minha lição: se eu quiser ter certeza de que algo aparece na inicialização, eu vou reiniciar o servidor e ver o que acontece . Basta agendar uma janela de manutenção para o seu servidor (se necessário) e executar algumas reinicializações de teste nesse momento. Veja se funciona.

No passado eu tenho certeza que "isso vai começar na próxima reinicialização", mas não será.

    
por 04.08.2011 / 13:03
0

Resposta rápida

Para executar manualmente rc.local , vá para rc.local path ( /etc/ ) e faça:

$ sudo ./rc.local

Se você tiver um erro para execução, faça isso antes:

$ sudo chmod +x rc.local
    
por 18.06.2018 / 14:01