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 rebootdo que shutdown -r now.
shutdownuso agora como padrão. Não tente obter ajuda para desligar shutdown -hsempre, 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!
rebootinvocará 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 shutdowncomando para você.
shutdownfaz 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 haltou 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: shutdownestá dentro /sbin, enquanto rebootestá dentro /usr/bin.
Por que isso importa, você pergunta? Eu vou te contar.
Os itens abaixo /usrsã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/binse houver uma alternativa em /binou /sbin.
shutdowné o principal utilitário, sempre disponível. rebooté apenas um utilitário de conveniência.
rebootestá no /sbinDebian (com SysVinit) e Ubuntu (com iniciante).