Execute o script no arranque depois de todo o resto

5

OK, então há um serviço (nagios) rodando em uma caixa Debian que funciona muito bem, exceto por um problema muito específico que só ocorre depois que a caixa foi reiniciada. O problema é facilmente corrigido ao reiniciar o serviço manualmente. O problema em si é tão específico e tão desconcertantemente esotérico que não tenho tempo para descartá-lo (um único check-out de 500+ retorna com um bug, mas apenas quando está sendo executado por nagios).

A melhor coisa a seguir, então, seria reiniciar o próprio serviço na inicialização, para que ninguém precise fazê-lo manualmente a cada vez. Até agora eu tentei fazer isso com o seguinte:

Adicionando "/etc/init.d/nagios restart" ao /etc/rc.local, isto é executado a partir dos logs, mas não corrige o problema (ainda deve ser feito manualmente)

Movendo o tempo para iniciar o nagios até o final (update-rc.d nagios defaults 99 10)

Voltamos para a correção rc.local, desta vez adicionando uma linha "sleep 20", isso não faz nada além de atrasar a inicialização da caixa em 20 segundos.

Mais alguma coisa que eu possa tentar / olhar?

    
por Will Bates 26.06.2013 / 18:22

2 respostas

2

Verifique se o script de inicialização que você quer atrasar tem um bloco de comentários como este:

### BEGIN INIT INFO
# Provides:          scriptname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

Este bloco, como declarado na LSBInitScripts wiki do Debian, diz ao subsistema init que alguns outros recursos devem ser requeridos para serem iniciados antes do seu O script nagios é executado.

Então, tudo o que você precisa fazer é apontar por que o script de inicialização do nagios precisa ser reiniciado, porque a rede ainda não está pronta? É porque o servidor web ainda está começando? Ou nfs ainda não sincronizados?

Cabe a você descobrir por que precisa reiniciar o nagios todas as vezes, mas essa abordagem é a melhor solução elegante para o seu caso.

    
por 26.06.2013 / 20:24
1

Se a reinicialização precisar ser feita manualmente, sua verificação pode depender de algumas variáveis que são definidas quando você efetua login.

Verifique se a execução manual service nagios restart também corrige seu problema ou tem que ser /etc/init.d/nagios restart .

# Required-Start:    $all

seria o caminho para garantir que todos os outros serviços sejam iniciados antes de iniciar seu script. Mas eu acho que rc.local está rodando depois que todos os serviços são iniciados de qualquer forma, então não ajudará.

    
por 26.06.2013 / 21:29