Por que precisamos da função de reinicialização em diferentes binários?
shutdown -r
e
reboot
Ou eles diferem em algo?
Por que precisamos da função de reinicialização em diferentes binários?
shutdown -r
e
reboot
Ou eles diferem em algo?
Respostas:
Nós não precisamos necessariamente dos dois, mas os temos por causa da história do Unix e de sua multiplicidade de versões.
Nas respectivas páginas de manual:
O desligamento é mais geral e mais poderoso, enquanto a reinicialização é mais amigável e fácil de lembrar.
O shutdown permite especificar um argumento temporal (para reiniciar em 5 minutos, por exemplo) e permite que você faça muitas coisas além da reinicialização, incluindo:
No entanto, se você só quer reiniciar o sistema agora, é mais fácil de escrever reboot
do que shutdown -r now
.
shutdown
uso agora como padrão. Não tente obter ajuda para desligar shutdown -h
sempre, especialmente em um servidor em algum lugar do datacenter.
Os dois comandos fazem algo diferente, no entanto, podem acabar chamando um ao outro, e é por isso que parecem fazer a mesma coisa!
reboot
invocará o kernel para realmente acionar uma reinicialização do hardware. No entanto, isso só será feito se o sistema estiver pronto para o desligamento - todos os daemons e processos do usuário devem ser parados, sistemas de arquivos desmontados etc. Por isso, verifica o nível de execução do sistema e, se não for 0 ou 6, na verdade, ele chamará o shutdown
comando para você.
shutdown
faz com que o nível de execução do sistema seja alterado. A alteração no nível de execução (para 0 para parada ou 6 para reinicialização) executa muitos scripts em /etc/rc0.d ou rc6.d que encerram daemons, desmontam sistemas de arquivos etc. Finalmente, esses scripts invocam halt
ou reboot
- desta vez o sistema está em o nível de execução correto e eles instruem o kernel a reiniciar (ou parar).
Além do que o iconoclasta escreveu, há uma distinção importante entre os dois programas: shutdown
está dentro /sbin
, enquanto reboot
está dentro /usr/bin
.
Por que isso importa, você pergunta? Eu vou te contar.
Os itens abaixo /usr
são aqueles que não precisam estar disponíveis até que o sistema seja inicializado o suficiente para que ele seja minimamente funcional. Diretórios de nível superior que são tradicionalmente não montados em sistemas de arquivos separados - /bin
, /etc
, /sbin
, etc. - são esperados para estar disponível enquanto o sistema está a atingir este estado minimamente útil. Existem várias implicações desse design; por exemplo, é péssimo escrever a cláusula "stop" de um script de inicialização do SysV que usa programas /usr/bin
se houver uma alternativa em /bin
ou /sbin
.
shutdown
é o principal utilitário, sempre disponível. reboot
é apenas um utilitário de conveniência.
reboot
está no /sbin
Debian (com SysVinit) e Ubuntu (com iniciante).