O comportamento exato desses três comandos varia de sistema operacional para sistema operacional.
Thorbjørn Ravn Andersen 11/11
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.
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.
Respostas:
Não há diferença neles. Internamente, eles fazem exatamente a mesma coisa:
reboot
usa oshutdown
comando (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 oSIGKILL
sinal (ainda encontrado nas fontes, pode ser chamado com a-f
opção); nas distros mais recentes, o padrão é o mais gracioso e o mais amigável para iniciantesinit 1 -> shutdown -r
. Isso garante que os daemons se limpem antes do desligamento.init 6
informa aoinit
processo para encerrar todos os processos / daemons gerados conforme gravados nos arquivos init (na ordem inversa em que foram iniciados) e, por último, invocar oshutdown -r now
comando para reiniciar a máquinaHoje 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 now
conforme indicado abaixoHá uma pequena explicação tirada das páginas de manual sobre por que o
reboot -f
não é seguro:Editar:
Esqueci de mencionar, nas próximas distribuições RHEL, você deve usar o novo
systemctl
comando para emitir poweroff / reboot. Conforme declarado nas páginas de manualreboot
eshutdown
eles são "um comando legado disponível apenas para compatibilidade". e osystemctl
método será o único seguro.fonte
init 1 -> shutdown -r
?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
now
horá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.
fonte
Em unices tradicionais,
reboot
eshutdown -r now
sã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 ainit 6
.init (8) reinicialização (8)
fonte
No FreeBSD há uma diferença entre
reboot
eshutdown -r now
. Nareboot
página do manual:fonte