Por que precisamos da função de reinicialização em binários diferentes?

12

Por que precisamos da função de reinicialização em binários diferentes?

shutdown -r

e

reboot

Ou eles diferem em algo?

    
por LanceBaynes 13.05.2011 / 17:55

3 respostas

15

Não precisamos necessariamente dos dois, mas temos os dois por causa da história do Unix e sua multiplicidade de versões.

De suas respectivas páginas do manual:

  • O utilitário de desligamento apareceu no 4.0BSD.
  • Um utilitário de reinicialização apareceu na versão 6 do AT & T UNIX.

O desligamento é mais genérico e mais poderoso, enquanto a reinicialização é mais fácil e fácil de lembrar.

O

shutdown permite que você especifique um argumento temporal (para reiniciar em 5 minutos, por exemplo) e permite que você faça muitas coisas além da reinicialização, incluindo:

  • você pode apenas lançar usuários e não encerrar de fato
  • você pode colocar o sistema para dormir em vez de desligar
  • você pode simplesmente desligar sem reinicializar (como o comando halt)
  • você pode incluir uma mensagem de aviso personalizada para usuários no sistema

No entanto, se você quiser apenas reinicializar o sistema agora, é mais fácil digitar reboot than shutdown -r now .

    
por 13.05.2011 / 18:12
6

Os dois comandos fazem algo diferente, mas eles podem acabar ligando uns para os outros, e é por isso que eles parecem fazer a mesma coisa!

reboot chamará o kernel para acionar uma reinicialização de hardware. No entanto, ele só fará isso se o sistema estiver pronto para o encerramento - todos os daemons e processos do usuário devem ser parados, sistemas de arquivos desmontados, etc. Por isso, ele verifica o nível de execução do sistema e, se não for 0 ou 6, o comando shutdown para você.

shutdown faz com que o nível de execução do sistema seja alterado. A mudança de 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 desligam daemons, desmontam sistemas de arquivos, etc. Finalmente, esses scripts invocam halt ou reboot - desta vez o sistema está no runlevel correto e eles instruem o kernel a reiniciar (ou parar).

    
por 14.05.2011 / 09:17
6

Além do que o iconoclasta escreveu, há uma distinção importante entre os dois programas: shutdown está em /sbin , enquanto reboot está em /usr/bin .

Por que isso importa, você pergunta? Eu vou te dizer.

As coisas sob /usr são aquelas que não precisam estar disponíveis até que o sistema seja inicializado o suficiente para que o sistema seja minimamente funcional. Os diretórios de nível superior que tradicionalmente nunca são montados em sistemas de arquivos separados - /bin , /etc , /sbin , etc. - devem estar disponíveis enquanto o sistema estiver atingindo esse estado minimamente útil. Existem várias implicações desse design; por exemplo, é um estilo ruim escrever a cláusula "stop" de um script init do SysV que usa programas em /usr/bin se houver uma alternativa em /bin ou /sbin .

shutdown é o utilitário chave, o sempre disponível. reboot é apenas um utilitário de conveniência.

    
por 13.05.2011 / 21:41