Não há diferença neles. Internamente, eles fazem exatamente a mesma coisa:
-
reboot
usa 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 6
informa ao processoinit
para 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 now
para 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.