Use shutdown -r
. Ele é usado historicamente em vários unices, por isso acredito que sua interface e comportamento são mais conhecidos e previsíveis.
Eu tenho 2 máquinas rodando linux.
Em uma máquina, o comando reboot é um executável normalmente encontrado em todas as distribuições do Linux.
Na segunda máquina, o comando reboot é um script de shell customizado usando alguns outros comandos da ferramenta de hardware para reinicializar o sistema.
Uma diferença de comportamento entre as duas máquinas é que, quando executo o comando reboot
na primeira máquina, ele mostra outro prompt de shell e, em seguida, reinicializa.
Mas, no caso da segunda máquina, ela é reinicializada sem mostrar um prompt de shell. Espero que a segunda máquina se comporte da mesma maneira que a primeira máquina quando o comando de reinicialização é dado.
Atualmente estou analisando o código-fonte de shutdown.c
e halt.c
normalmente encontrado nas distribuições linux, para que eu possa descobrir a implementação que produz o shell propmt na reinicialização e usar isso no shell script na segunda máquina.
Por favor, me dê algumas dicas sobre onde devo começar a procurar a implementação.
Obrigado
Use shutdown -r
. Ele é usado historicamente em vários unices, por isso acredito que sua interface e comportamento são mais conhecidos e previsíveis.
Meu palpite é que o programa se duplica em segundo plano.
Eu espero que o programa que retorna você ao prompt não esteja realmente fazendo nada, mas sim comunicando-se com seu daemon de inicialização (sysvinit ou upstart ou o que estiver rodando como processo 1) e pedindo para desligar o sistema. O outro script é apenas um script normal.
O kernel do Linux é o que emite os syscalls finais para reinicializar a máquina, não a área de usuário. Provavelmente, o kernel usa internamente o IPMI para reinicializar a máquina. Os sistemas têm diferentes abordagens para desligar e reinicializar. Eu encontrei alguns que exigem que você chute um pino no RTC para reiniciar o sistema, e é exatamente isso que o kernel faz para aquela máquina.
Qual é a arquitetura da máquina? ARM, MIPS, outro? WindRiver é o desenvolvedor por trás do VxWorks, se não me engano. Você provavelmente pode ligar para o pessoal de suporte e ver se ele também pode ajudar você.