Não há diferença neles. Internamente, eles fazem exatamente a mesma coisa:
-
rebootusa o comandoshutdown(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 informa ao kernel para emitir o comando power ACPI. A fonte pode ser encontrada aqui . Em distribuições antigas, o comando reboot estava forçando os processos a saírem emitindo o sinalSIGKILL(ainda encontrado em fontes, pode ser invocado com a opção-f), nas distribuições mais recentes o padrão é o mais gracioso e inicial amigávelinit 1 -> shutdown -r. Isso garante que os daemons se limpem antes do desligamento. -
init 6informa ao processoinitpara encerrar todos os processos / daemons gerados conforme escritos nos arquivos init (na ordem inversa em que foram iniciados) e, por último, invocar o comandoshutdown -r nowpara reinicializar a máquina
Hoje não há muita diferença, pois ambos os comandos fazem exatamente o mesmo, e eles respeitam os scripts de inicialização usados para iniciar serviços / daemons, invocando os scripts de desligamento para eles. Exceto por reboot -f -r now conforme indicado abaixo
Há uma pequena explicação tirada das manpages de porque o reboot -f não é seguro:
-f, --force
Force immediate halt, power-off, reboot. Don't contact the init system.
Editar:
Esqueci de mencionar, nas próximas distribuições do RHEL, você deve usar o novo comando systemctl para emitir o desligamento / reinicialização. Conforme indicado nas páginas de manual de reboot e shutdown , elas são "um comando legado disponível apenas para compatibilidade". e o método systemctl será o único seguro.