Veja unix.stackexchange.com/questions/8690/… para obter a distinção - os comandos podem se comportar de maneira diferente dependendo do sistema operacional (mas geralmente fazem a mesma coisa no Linux).
PleaseStand
Conforme observado abaixo e explicado em detalhes em unix.stackexchange.com/a/196014/5132 , a premissa dessa pergunta é falsa nos sistemas operacionais Linux systemd. Esses não são binários diferentes nesses sistemas.
JdeBP
Respostas:
15
Nós não precisamos necessariamente dos dois, mas os temos por causa da história do Unix e de sua multiplicidade de versões.
Nas respectivas páginas de manual:
O utilitário de desligamento apareceu no 4.0BSD.
Um utilitário de reinicialização apareceu na Versão 6 AT&T UNIX.
O desligamento é mais geral e mais poderoso, enquanto a reinicialização é mais amigável e fácil de lembrar.
O shutdown permite especificar 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 simplesmente lançar usuários e não desligar
você pode colocar o sistema em suspensão em vez de desligar
você pode simplesmente desligar sem reiniciar (como o comando halt)
você pode incluir uma mensagem de aviso personalizada para usuários no sistema
No entanto, se você só quer reiniciar o sistema agora, é mais fácil de escrever rebootdo que shutdown -r now.
Curiosidade: algumas versões de shutdownuso agora como padrão. Não tente obter ajuda para desligar shutdown -hsempre, especialmente em um servidor em algum lugar do datacenter.
Residuum 10/10/11
6
Os dois comandos fazem algo diferente, no entanto, podem acabar chamando um ao outro, e é por isso que parecem fazer a mesma coisa!
rebootinvocará o kernel para realmente acionar uma reinicialização do hardware. No entanto, isso só será feito se o sistema estiver pronto para o desligamento - todos os daemons e processos do usuário devem ser parados, sistemas de arquivos desmontados etc. Por isso, verifica o nível de execução do sistema e, se não for 0 ou 6, na verdade, ele chamará o shutdowncomando para você.
shutdownfaz com que o nível de execução do sistema seja alterado. A alteração no 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 encerram daemons, desmontam sistemas de arquivos etc. Finalmente, esses scripts invocam haltou reboot- desta vez o sistema está em o nível de execução correto e eles instruem o kernel a reiniciar (ou parar).
Além do que o iconoclasta escreveu, há uma distinção importante entre os dois programas: shutdownestá dentro /sbin, enquanto rebootestá dentro /usr/bin.
Por que isso importa, você pergunta? Eu vou te contar.
Os itens abaixo /usrsão aqueles que não precisam estar disponíveis até que o sistema seja inicializado o suficiente para que ele seja minimamente funcional. Diretórios de nível superior que são tradicionalmente não montados em sistemas de arquivos separados - /bin, /etc, /sbin, etc. - são esperados para estar disponível enquanto o sistema está a atingir este estado minimamente útil. Existem várias implicações desse design; por exemplo, é péssimo escrever a cláusula "stop" de um script de inicialização do SysV que usa programas /usr/binse houver uma alternativa em /binou /sbin.
shutdowné o principal utilitário, sempre disponível. rebooté apenas um utilitário de conveniência.
rebootestá no /sbinDebian (com SysVinit) e Ubuntu (com iniciante).
Gilles 'SO- stop be evil'
Ok, então meta-resposta: conheça o seu sistema. :) Eu uso o CentOS com mais frequência.
Warren Young
Mesmo para Arch (systemd), tanto in / sbin
daisy
De fato, nos sistemas operacionais Linux systemd também não é o utilitário principal, pois com systemd todos esses comandos são (como diz o systemd doco) comandos "compatibilidade". De fato, a premissa da pergunta é falsa. Eles não estão em binários diferentes. Para detalhes, consulte unix.stackexchange.com/a/196014/5132 .
Respostas:
Nós não precisamos necessariamente dos dois, mas os temos por causa da história do Unix e de sua multiplicidade de versões.
Nas respectivas páginas de manual:
O desligamento é mais geral e mais poderoso, enquanto a reinicialização é mais amigável e fácil de lembrar.
O shutdown permite especificar um argumento temporal (para reiniciar em 5 minutos, por exemplo) e permite que você faça muitas coisas além da reinicialização, incluindo:
No entanto, se você só quer reiniciar o sistema agora, é mais fácil de escrever
reboot
do queshutdown -r now
.fonte
shutdown
uso agora como padrão. Não tente obter ajuda para desligarshutdown -h
sempre, especialmente em um servidor em algum lugar do datacenter.Os dois comandos fazem algo diferente, no entanto, podem acabar chamando um ao outro, e é por isso que parecem fazer a mesma coisa!
reboot
invocará o kernel para realmente acionar uma reinicialização do hardware. No entanto, isso só será feito se o sistema estiver pronto para o desligamento - todos os daemons e processos do usuário devem ser parados, sistemas de arquivos desmontados etc. Por isso, verifica o nível de execução do sistema e, se não for 0 ou 6, na verdade, ele chamará oshutdown
comando para você.shutdown
faz com que o nível de execução do sistema seja alterado. A alteração no 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 encerram daemons, desmontam sistemas de arquivos etc. Finalmente, esses scripts invocamhalt
oureboot
- desta vez o sistema está em o nível de execução correto e eles instruem o kernel a reiniciar (ou parar).fonte
Além do que o iconoclasta escreveu, há uma distinção importante entre os dois programas:
shutdown
está dentro/sbin
, enquantoreboot
está dentro/usr/bin
.Por que isso importa, você pergunta? Eu vou te contar.
Os itens abaixo
/usr
são aqueles que não precisam estar disponíveis até que o sistema seja inicializado o suficiente para que ele seja minimamente funcional. Diretórios de nível superior que são tradicionalmente não montados em sistemas de arquivos separados -/bin
,/etc
,/sbin
, etc. - são esperados para estar disponível enquanto o sistema está a atingir este estado minimamente útil. Existem várias implicações desse design; por exemplo, é péssimo escrever a cláusula "stop" de um script de inicialização do SysV que usa programas/usr/bin
se houver uma alternativa em/bin
ou/sbin
.shutdown
é o principal utilitário, sempre disponível.reboot
é apenas um utilitário de conveniência.fonte
reboot
está no/sbin
Debian (com SysVinit) e Ubuntu (com iniciante).