Respostas:
Geralmente, um usa o shutdown
comando . Permite um atraso de tempo e uma mensagem de aviso antes do desligamento ou reinicialização, o que é importante para a administração do sistema de servidores shell multiusuário; pode fornecer aos usuários um aviso prévio do tempo de inatividade.
Como tal, o comando shutdown deve ser usado assim para interromper / desligar o computador imediatamente (pelo menos no Linux e no FreeBSD):
shutdown -h now
Ou, para reiniciá-lo com um aviso personalizado de 30 minutos:
shutdown -r +30 "Planned software upgrades"
Após o atraso, shutdown
informa init
para alterar para o nível de execução 0 (parada) ou 6 (reinicialização). (Observe que, ao omitir -h
ou -r
fazer com que o sistema entre no modo de usuário único (nível de execução 1), que mata a maioria dos processos do sistema, mas na verdade não interrompe o sistema; ele ainda permite que o administrador permaneça logado como root.)
Depois que os processos do sistema são eliminados e os sistemas de arquivos desmontados, o sistema pára / desliga ou reinicia automaticamente. Isso é feito usando o comando halt
oureboot
, que sincroniza as alterações nos discos e executa a parada / desligamento real ou a reinicialização.
No Linux, se halt
ou reboot
for executado quando o sistema ainda não iniciou o processo de desligamento, ele chamará o shutdown
comando automaticamente, em vez de executar diretamente a ação pretendida. No entanto, em sistemas como o FreeBSD , esses comandos primeiro registram a ação wtmp
e, em seguida, executam a interrupção / reinicialização imediatamente , sem primeiro interromper os processos ou desmontar os sistemas de arquivos.
halt
, reboot
e shutdown
programas que invocam o outro. Há um único programa, com muitos analisadores de linha de comando que se direcionam para um caminho de código internamente. Nem existem níveis de execução. O desligamento também não entra no modo de usuário único. De fato, o próprio modo de usuário único foi renomeado. Para detalhes, consulte unix.stackexchange.com/a/196014/5132 .
Na década de 1980, os BSDs tinha halt
, reboot
e shutdown
. O sistema 5 UNIX tinha um conjunto de ferramentas de compatibilidade com BSD. Mas, nativamente, possuía um shutdown
comando próprio e diferente ; e não tinha halt
ou nem reboot
um pouco. (Algumas variantes do sistema 5 tinham coisas como as do SCO XENIX haltsys
.)
O BSD halt
e os reboot
comandos eram de baixo nível, drásticos e imediatos. A maneira atenciosa de desligar um sistema BSD era o shutdown
comando, que fazia todas as coisas que se espera que acontecessem: wall
mensagens para usuários, serviços cortados normalmente, entradas de log gravadas, logins desativados e assim por diante.
Enquanto os BSDs estavam em grande parte onde a sabedoria recebida originava esses " shutdown
executivos halt
/ reboot
", e que estes deveriam ser usados com cuidado; era o mundo do System 5 onde as pessoas aprendiam o hábito contrário que halt
/ reboot
eram apenas atalhos úteis e nada mais: /usr/ucb/halt
do "Pacote de Compatibilidade BSD", não era diferente shutdown -h
. Os dois acabaram fazendo init 0
.
halt
. 11/05/1982. 4.2BSD manual.haltsys
. 03/06/2005. Manual do SCO OpenServer.Atualmente, temos uma variedade de possíveis conjuntos de ferramentas de gerenciamento de sistema. Os BSDs ainda possuem seu conjunto de ferramentas, embora eliminado qualquer AT&IS possível nos anos 90. Miquel van Smoorenburg em 1992 (re) escreveu um Linux init
+ rc
e suas ferramentas associadas, que as pessoas agora chamam de "System 5 init", mesmo que não seja realmente o software do UNIX System 5 (e não é apenas init
) Há também systemd , arrivista , e comer , cada um dos quais tem suas próprias implementações de halt
, reboot
, fasthalt
, fastboot
, e assim por diante.
Os conjuntos de ferramentas também cresceram e mudaram. Agora existe um poweroff
comando, não presente nos sistemas operacionais dos anos 80, porque as Unidades Centrais de Processamento na maioria das máquinas contemporâneas não tinham como controlar suas fontes de alimentação. Os conjuntos de ferramentas do Linux, em particular, adquiriram os comandos BSD; mas, como as ferramentas de compatibilidade com BSD no UNIX System 5, elas não são exatamente exatas e as coisas foram amplamente achatadas.
Esse achatamento nos levou ao ponto em que halt
e na maior parteshutdown
são os mesmos. Mas os detalhes exatos variam de conjunto de ferramentas para conjunto de ferramentas, e a mecânica de cada conjunto de ferramentas é um pouco diferente.
Ele também trouxe-nos para a posição ligeiramente embaraçosa em que este conjunto de comandos se tornou tão enfeitado com opções de compatibilidade que agora permite que as pessoas a dar computadores instruções auto-contraditórias, como reboot --halt
e poweroff --reboot
, como observei na página de manual para o Nosh halt
, fasthalt
, reboot
, fastboot
, e poweroff
comandos. ☺
halt
, reboot
, poweroff
, telinit
, E shutdown
são todos um programa . Na verdade, é o próprio systemctl
programa do systemd . Ele possui vários analisadores de linha de comando para as várias sintaxes de linha de comando desses comandos, além de suas próprias, mas depois disso, ele se funde amplamente em um caminho de código internamente. Não há diferença entre usar halt
e suas opções de comando para acionar uma ação e usar shutdown
e suas opções de comando para acionar a mesma ação.
O systemd não considera o modo de recuperação (que é o que as pessoas do systemd renomearam para o modo de usuário único ) como um estado desligado do sistema e não pode ser alcançado com nenhum desses comandos. Sem opção shutdown now
é igual a poweroff
.
Os BSDs mantêm amplamente sua semântica dos anos 80. halt
e, shutdown
portanto, não são equivalentes em seus conjuntos de ferramentas. halt
e reboot
são um único programa; e ainda são de baixo nível, imediatos e drásticos. Considerando que , shutdown
e poweroff
também um único programa, faça todas as coisas importantes, como desligamento agendado, gravação de wall
mensagens, ações de log, desativação de logon e assim por diante.
Nos conjuntos de ferramentas do BSD, shutdown
/ poweroff
tradicionalmente acabava invocando halt
/ reboot
para aprovar a alteração final do estado do sistema. Os (atualmente atualmente incorretos) receberam a sabedoria de que " shutdown
execs halt
/ reboot
" de fato ainda mantém o NetBSD e o OpenBSD. Mas no FreeBSD / TrueOS / DragonFlyBSD, este é o caso apenas se a -o
opção for usada. Nessas BSDs, tanto desses programas normalmente promulgar a mudança final estado do sistema, enviando vários sinais ( INT
, USR1
e USR2
) para processar # 1. init
faz todo o gerenciamento do estado do sistema nesses sistemas.
Em todos eles, a opção menos shutdown now
não é equivalente a qualquer um halt
, reboot
ou poweroff
. Ele faz a transição para o modo de usuário único BSD , do qual é possível fazer a transição novamente para o modo multiusuário .
shutdown
. Manual do Gerente do Sistema . Páginas do Manual NetBSD. 04/11/2011.reboot
,halt
. Páginas do Manual do OpenBSD. 03/09/2016.shutdown
. Páginas do Manual do FreeBSD. 21/09/2016.reboot
, halt
, fastboot
,fasthalt
. Páginas do Manual do FreeBSD. 19/03/2017.shutdown
. Manual do Gerente do Sistema . Páginas do manual do DragonFlyBSD. 29/09/2016.reboot
, halt
, fastboot
,fasthalt
. Manual do Gerente do Sistema . Páginas do manual do DragonFlyBSD. 29/09/2016.No conjunto de ferramentas de gerenciamento de sistema nosh, halt
, fasthalt
, poweroff
, fastpoweroff
, reboot
, e fastboot
são todos um programa. É um calço de compatibilidade com versões anteriores que normalmente se acorrenta shutdown
, o oposto da sabedoria recebida. A --force
opção faz com que ela acorrente system-control
.
Portanto, não há diferença (ausente --force
) entre o halt
comando e o shutdown
comando (com a opção equivalente) neste conjunto de ferramentas, pois esse conjunto de comandos "Compatibilidade com o BSD / System 5" é simplesmente uma fina camada de calço por cima shutdown
.
shutdown
. páginas de manual do conjunto de ferramentas nosh. Softwares.telinit, init, reboot, halt, haltsys, powercycle, poweroff, … fastboot, fasthalt, fastpowercycle, fastpoweroff, …
páginas de manual do conjunto de ferramentas nosh. Softwares.Assim como no nosh, no conjunto inicial de ferramentas de gerenciamento de sistemas se aplica o oposto da sabedoria BSD recebida. halt
,, reboot
e poweroff
são todos um programa que normalmente acorrenta a shutdown
; a menos que a --force
opção seja usada, o que faz com que o reboot()
sistema chame a si próprio.
Portanto, novamente, não há diferença (ausente --force
) entre o halt
comando shutdown
ee comando (com a opção equivalente) neste conjunto de ferramentas. Além disso, novamente, sem opção shutdown now
(que nenhuma das halt
, reboot
ou poweroff
pode acabar invocando, pois todas definem as opções) coloca o sistema no modo de usuário único em vez de desligá-lo.
shutdown
(8) . Páginas de manual do Ubuntu.reboot
(8), halt
(8), poweroff
(8) . Páginas de manual do Ubuntu.init
+rc
Novamente, neste conjunto de ferramentas, aplica-se o oposto da sabedoria recebida do BSD halt
e, reboot
simplesmente, encadeia a shutdown
- a menos que o sistema já esteja no poweroff ou interrompa os "níveis de execução", caso em que esses comandos realmente promovem a alteração final do estado do sistema. shutdown
por sua vez, acorrenta a init
.
Então, novamente, não há diferença (a menos que o sistema já esteja amplamente desligado) entre halt
e shutdown
porque o primeiro apenas invoca o último. E sim, mais uma vez, a opção menos shutdown now
(que nenhum halt
, reboot
ou poweroff
pode acabar invocando como eles todas as opções definidas) traz o sistema em modo de usuário único , em vez de desligá-lo.
Eu suspeito que isso seja um pouco dependente da versão do UNIX / Linux que você está usando. No Centos (e eu espero que outro Linux moderno) interrompa o desligamento das chamadas (desde que você não esteja no nível de execução 0 ou 6), para que seu sistema seja desligado corretamente. No Solaris 10, a interrupção é mais brutal, apenas libera os caches de disco e desliga o sistema - não é feita nenhuma tentativa de executar nenhum script ou encerrar as instalações smf .
Para aqueles que usam AWS EC2: na AWS shutdown
pára uma instância, quando halt
termina -lo.
No linux, "halt" e "reboot" são aliases do comando shutdown - shutdown -h
e shutdown -r
respectivamente. O desligamento da palavra de barra geralmente assume -h.
aliases
no sentido de aliases de shell, mas sim, halt
basicamente apenas chama shutdown -h
e reboot
executa shutdown -r
. Observe que se você passar a -f
opção (force) para halt
ou reboot
, nãoshutdown
será chamada.
sendmail
comando neste momento - Assim como os MTAs, na verdade não importa qual sistema init você usa, porque todos reconhecerão ambos shutdown
e halt
como tal.
sendmail
comando. É como o sendmail
comando, mas não da maneira que você pensa.