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.