Qual é a diferença entre reboot, init 6 e shutdown -r now?


Respostas:


83

Não há diferença neles. Internamente, eles fazem exatamente a mesma coisa:

  • rebootusa o shutdowncomando (com a opção -r). O comando shutdown usado para matar todos os processos em execução, desmontar todos os sistemas de arquivos e finalmente diz ao kernel para emitir o comando power da ACPI. A fonte pode ser encontrada aqui . Nas distros mais antigas, o comando reboot estava forçando os processos a sair emitindo o SIGKILLsinal (ainda encontrado nas fontes, pode ser chamado com a -fopção); nas distros mais recentes, o padrão é o mais gracioso e o mais amigável para iniciantes init 1 -> shutdown -r. Isso garante que os daemons se limpem antes do desligamento.

  • init 6informa ao initprocesso para encerrar todos os processos / daemons gerados conforme gravados nos arquivos init (na ordem inversa em que foram iniciados) e, por último, invocar o shutdown -r nowcomando para reiniciar a máquina

Hoje não há muita diferença, pois os dois comandos fazem exatamente o mesmo, e eles respeitam os scripts init usados ​​para iniciar serviços / daemons, invocando os scripts de encerramento para eles. Exceto reboot -f -r nowconforme indicado abaixo

Há uma pequena explicação tirada das páginas de manual sobre por que o reboot -fnão é seguro:

  -f, --force
    Forçar parada imediata, desligamento, reinicialização. Não entre em contato com o sistema init.

Editar:

Esqueci de mencionar, nas próximas distribuições RHEL, você deve usar o novo systemctlcomando para emitir poweroff / reboot. Conforme declarado nas páginas de manual reboote shutdowneles são "um comando legado disponível apenas para compatibilidade". e o systemctlmétodo será o único seguro.


Às vezes, minha reinicialização trava no SIGTERM, existe uma maneira de saber o porquê e também uma maneira de atingir o tempo limite da reinicialização, de modo que, se demorar muito, forçará uma reinicialização?
CMCDragonkai

2
Essas versões do RHEL não são mais "futuras". ☺ Conforme explicado em mais detalhes em unix.stackexchange.com/a/196014/5132 , nesses sistemas operacionais systemd não há diferença alguma. Eles nem são programas diferentes.
JdeBP # 13/15

Você digitou dizendo init 1 -> shutdown -r?
Deed02392

Seu link está quebrado.
whoKnows

8

O desligamento é preferível, pois permite especificar o motivo da ação drástica - algo que você deve sempre fazer. A mensagem será gravada no (s) log (s) para posteridade. Por exemplo:

shutdown -r now 'Kernel upgrade requires reboot'

Você também pode executar uma reinicialização agendada - especificando algo diferente do nowhorário da reinicialização:

shutdown -r 22:00 'Work around kernel memory leak'

Seus usuários receberão lembretes periódicos para serem divulgados à medida que o tempo se aproxima - o processo será mais organizado e profissional.


5

Em unices tradicionais, reboote shutdown -r nowsão comandos muito diferentes. Sob uso típico, rebooté seguro apenas para uso no modo de usuário único.

shutdown -r nowé o método canônico para desligar diferentes nix's e é mais seguro de usar em geral e é funcionalmente equivalente a init 6.

init (8) reinicialização (8)


4

No FreeBSD há uma diferença entre reboote shutdown -r now. Na rebootpágina do manual:

Normalmente, o utilitário shutdown (8) é usado quando o sistema precisa ser interrompido ou reiniciado, dando aos usuários um aviso prévio de sua destruição iminente e finalizando programas específicos de forma limpa.


1
Porém, essa não é uma pergunta do BSD, como evidenciado pela tag na pergunta e pelo uso do nível de execução do System 5 em um dos comandos. ☺
JdeBP

1
Eu sei que é uma questão de Linux. Eu pensei que alguém poderia achar útil saber que em alguns outros sistemas isso é uma diferença.
Marián Černý
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.