como interromper a reinicialização do sistema?

1

Eu tenho atualmente um sistema que reinicia a cada 1 em 3 reinicializações, eu posso encontrar a data e hora de quando e eu posso descobrir quem (apenas diz sistema), mas não consigo descobrir o porquê.

Eu queria saber se era possível substituir o script de reinicialização (e como eu faria isso?) com um dud para capturar quem, onde e por que está tentando ativar a reinicialização?

Estou usando o linux linux - que é um FS baseado no Ubuntu - aberto a qualquer sugestão sobre a depuração deste problema

    
por TheHidden 25.02.2016 / 16:57

1 resposta

1

Maneira de scripts sujos

Existem várias maneiras de reinicializar. Uma maneira que eu vejo para investigar é substituir shutdown, halt, reboot e init por scripts:

for cmd in shutdown halt reboot init
do 
    mv /usr/bin/$cmd /usr/bin/${cmd}.ori
    ln -s /usr/bin/${cmd}.ori /usr/bin/$cmd
done

Em seguida, crie um script de shell registrando as informações:

#!/bin/bash
echo "$0 called with $@ by $USER at 'time' - Processes: 'ps axjf'" >> /var/log/reboot.log
${0}.ori $@

Copie ou associe-o como /usr/bin/{shutdown,halt,reboot,init} . Você também deseja criar o /var/log/reboot.log e garantir que qualquer pessoa possa efetuar o login, embora somente root seja capaz de reinicializar.

O ps axjf deve permitir que você veja qual processo chamou seu script. Você pode querer adicionar mais informações no log, mas isso deve ser um bom começo.

Coisas que podem passar despercebidas

Outros comandos podem reinicializar o sistema chamando o syscall reboot . Podem ser comandos "oficiais" ou "desonestos".

O servidor X pode ser desligado e com algumas configurações, qualquer usuário pode fazê-lo. Se o acesso remoto e o desligamento forem permitidos, outras pessoas podem precisar de um desligamento à distância (no entanto, isso não explicaria o comportamento alternativo de todos os outros 3).

Meta de inicialização

Você poderia:

  • adicione um passo no início do objetivo nos runlevels 0 e 6 que aguardam algum tempo (por exemplo: sleep 60 ou um pouco mais)
  • tem um script executando ps axjf a cada 60 segundos e efetuando login em um arquivo

Isso deve fornecer informações sobre os processos em execução no momento do desligamento. Claro, você pode adicionar outros comandos que podem ajudá-lo a investigar as coisas executadas a cada 60 segundos

Auditoria de kernel

Outra maneira de investigar isso seria usar o recurso de auditoria do kernel , mas ele precisa ser ativado em seu kernel (não é o caso em muitas distribuições).

Em seguida, use:

auditctl -a entry,always -S reboot

para gravar todas as chamadas para reinicializar e usar ausearch para encontrar as chamadas concluídas.

    
por 26.02.2016 / 10:48

Tags