Encerra ao iniciar vários daemons

3

Estou executando um servidor Debian Squeeze AMD64. O runlevel de destino após a inicialização é o runlevel 2, que inclui rsyslogd, cron, sshd e algumas outras coisas, mas não dovecot, postfix, apache2, etc. O sistema falha ao atingir o runlevel 2 com vários sintomas:

  • O sistema trava ao tentar iniciar o rsyslogd
  • A inicialização no nível de execução 1 funciona e, em seguida, o login do console funciona
  • Iniciando o rsyslogd no nível de execução 1 via /etc/init.d/rsyslog trava
  • Iniciando o nível de execução 2 com o rsyslogd desativado funciona
  • Mas, em seguida, o login via console falha: eu recebo o motd e, em seguida, nada
  • Iniciando o sshd do nível de execução 1 é bem-sucedido
  • Mas não consigo fazer login via ssh. Às vezes, a senha do login ssh me dá o motd e, em seguida, nada, às vezes nem isso. Tentar oferecer uma chave pública parece incomodar bastante o sshd para não falar mais comigo.
  • Ao reinicializar a partir do nível de execução 1, o servidor trava ao tentar parar o apache2 (que não está em execução, portanto, isso deve ser realmente trivial). Tentar parar o apache2 quando logado no runleve 1 também é travado.

E isso é apenas o que falha o tempo todo. RAM foi testado, o dmesg não mostra problemas. Eu não tenho ideia.

Update : saída (abreviada) do rsyslogd -c4 -d chamada no runlevel 1

rsyslogd 4.6.4 startup, compatibility mode 4, module path '' caller requested object 'net', not found (iRet -3003) Requested to load module 'lmnet' loading module '/user/lib/rsyslog/lmnet.so' module of type 2 being loaded conf.c requested ref for 'lmnet', refcount 1 rsylog runtime initialized, version 4.6.4, current users 1 syslogd.c requested ref for 'lmnet', refcount now 2

Eu posso matar o rsyslogd com Strg + C, então. O / var / log não mostra nenhum dos arquivos de log configurados.

Update2 : Graças a @DerfK ainda não tenho ideia, mas pelo menos reduzi o problema. Agora estou testando com /etc/init.d/apache2 stop (sem um apache2 em execução, é claro), que trava também e parece uma falha ainda mais óbvia.

Após alguns testes, descobri que um arquivo com uma única linha:

/usr/sbin/apache2ctl configtest > /dev/null 2>&1

trava, enquanto a mesma linha executada em um shell interativo funciona. Eu não fui capaz de reduzir ainda mais esta linha enquanto, i. e. cada parte, os redirecionamentos de fluxo e o próprio comando são necessários para reproduzir o jeito. @DerfK também me apontou para strace , que deu uma dica superficial sobre que tipo de jeito temos aqui:

  • wait4(-1 para os scripts de inicialização
  • futex(0xsomepointer, FUTEX_WAIT_PRIVATE, 2, NULL para rsyslogd / apache2 binários chamados pelos scripts de inicialização

O sistema foi instalado como um Debian Lenny pelo meu hoster no outono de 2011, eu o atualizei para o Squeeze imediatamente e o mantive atualizado com o Squeeze, que costumava ser testado. Não houve grandes mudanças, no entanto. Eu acho que nunca tentei reiniciar o sistema antes.

Update3 : encontrei o problema. Meu /etc/nsswitch.conf especificou o ldap como backup de pesquisa de hosts, que não está disponível no momento da inicialização. Confiar em DNS só corrige meus problemas de inicialização.

    
por Adrian Heine 09.03.2011 / 19:27

2 respostas

1

Isso me parece que algum serviço básico de rede não está sendo iniciado. Compare o conteúdo de /etc/rc2.d com /etc/rc3.d ro veja se o runlevel 3 inicia qualquer coisa que o runlevel 2 não faz (normalmente funciona, mas geralmente não é algo fundamental).

    
por 09.03.2011 / 19:40
0

O Debian Squeeze faz inicialização simultânea por padrão. Isso significa que vários scripts de inicialização estão sendo executados ao mesmo tempo na inicialização. Você pode tentar desabilitar isso para que apenas um script seja executado por vez para ajudar a descobrir exatamente em qual etapa ele está falhando. Como os scripts de inicialização serão executados na mesma ordem toda vez que falharem no mesmo toda vez, a menos que seja um problema muito mais sério.

Para desativar a inicialização simultânea, adicione CONCURRENCY=none a /etc/default/rcS . Remova a linha para restaurar o padrão.

    
por 09.03.2011 / 19:53