Risposte:
Generalmente, si usa il shutdown
comando . Consente un ritardo e un messaggio di avviso prima dell'arresto o del riavvio, che è importante per l'amministrazione del sistema di server shell multiutente; può fornire agli utenti un preavviso dei tempi di fermo.
Pertanto, il comando shutdown deve essere usato in questo modo per arrestare / spegnere immediatamente il computer (almeno su Linux e FreeBSD):
shutdown -h now
O per riavviarlo con un preavviso personalizzato di 30 minuti:
shutdown -r +30 "Planned software upgrades"
Dopo il ritardo, shutdown
indica init
di passare al runlevel 0 (arresto) o 6 (riavvio). (Si noti che omettendo -h
o facendo -r
passare il sistema in modalità utente singolo (runlevel 1), che uccide la maggior parte dei processi del sistema ma non lo interrompe effettivamente; consente comunque all'amministratore di rimanere connesso come root.)
Una volta che i processi di sistema sono stati interrotti e i filesystem sono stati smontati, il sistema si arresta / si spegne o si riavvia automaticamente. Questo viene fatto usando il comando halt
oreboot
, che sincronizza le modifiche ai dischi e quindi esegue l'arresto / spegnimento effettivo o il riavvio.
Su Linux, se halt
o reboot
viene eseguito quando il sistema non ha già avviato il processo di spegnimento, invocherà shutdown
automaticamente il comando anziché eseguire direttamente l'azione prevista. Tuttavia, su sistemi come FreeBSD , questi comandi prima registrano l'azione wtmp
e quindi eseguono immediatamente l'arresto / riavvio, senza prima aver ucciso i processi o smontare i filesystem.
halt
, reboot
e shutdown
programmi che richiamano l'un l'altro. C'è un solo programma, con molti parser da riga di comando che si incanalano internamente in un percorso di codice. Né ci sono livelli di esecuzione. Né lo spegnimento va in modalità utente singolo. In effetti, la stessa modalità utente singolo è stata rinominata. Per i dettagli, consultare unix.stackexchange.com/a/196014/5132 .
Nel 1980, i BSD avevano halt
, reboot
e shutdown
. System 5 UNIX aveva un set di strumenti di compatibilità BSD. Ma nativamente aveva un suo shutdown
comando diverso ; e non ce l'avevo halt
o reboot
affatto. (Alcune varianti di System 5 avevano cose come SCO XENIX haltsys
.)
Il BSD halt
e i reboot
comandi erano di basso livello, drastici e immediati. Il modo premuroso di spegnere un sistema BSD era il shutdown
comando, che faceva tutte le cose che ci si aspetta che accadano: wall
messaggi agli utenti, servizi uccisi con grazia, voci di registro scritte, accessi disabilitati e così via.
Mentre i BSD erano in gran parte il luogo in cui la saggezza ricevuta aveva origine che " shutdown
execs halt
/ reboot
", e che questi ultimi dovevano essere usati con cura; era il mondo di System 5 in cui le persone imparavano l'abitudine contraria che erano halt
/ reboot
erano solo utili scorciatoie e niente di più: /usr/ucb/halt
dal "Pacchetto di compatibilità BSD", non era diverso a tutti gli effetti shutdown -h
. Entrambi hanno finito per farlo init 0
.
halt
. 1982/05/11. 4.2 Manuale diBSD.haltsys
. 2005-06-03. Manuale OpenServer SCO.Al giorno d'oggi, abbiamo una gamma di possibili set di strumenti di gestione del sistema. I BSD hanno ancora il loro set di strumenti, sebbene purificato da ogni possibile AT & Tisms negli anni '90. Miquel van Smoorenburg nel 1992 (ri) scrisse un Linux init
+ rc
e i loro strumenti associati, che la gente ora chiama "System 5 init", anche se in realtà non è il software di UNIX System 5 (e non è solo init
). Ci sono anche systemd , arrivista , e gustare uno spuntino , ognuno dei quali ha le proprie implementazioni di halt
, reboot
, fasthalt
, fastboot
, e così via.
Anche i set di strumenti sono cresciuti e cambiati. Ora c'è un poweroff
comando, non presente nei sistemi operativi degli anni '80 perché le Unità di elaborazione centrale sulla maggior parte delle macchine contemporanee non avevano modo di controllare i loro alimentatori. I set di strumenti Linux in particolare hanno acquisito i comandi BSD; ma come gli strumenti di compatibilità BSD su UNIX System 5, non sono esatti workalikes e le cose sono state ampiamente appiattite.
Questo appiattimento ci ha portato al punto in cui halt
e per lo piùshutdown
sono gli stessi. Ma i dettagli esatti variano da set di strumenti a set di strumenti e la meccanica di ciascun set di strumenti è leggermente diversa.
E ci ha anche portato alla posizione un po 'imbarazzante in cui questo gruppo di comandi è diventato così addobbato con opzioni di compatibilità che ora permette alle persone di dare computer istruzioni contraddittorie come reboot --halt
e poweroff --reboot
, come ho notato nella pagina di manuale per l'gustare uno spuntino halt
, fasthalt
, reboot
, fastboot
, e poweroff
comandi. ☺
halt
, reboot
, poweroff
, telinit
, E shutdown
sono tutto un programma . In realtà è il systemctl
programma di systemd . Dispone di diversi parser della riga di comando per le varie sintassi della riga di comando di tali comandi, oltre che dei propri, ma in seguito viene in gran parte incanalato in un percorso di codice internamente. Non c'è alcuna differenza tra l'utilizzo halt
e le sue opzioni di comando per attivare un'azione e l'utilizzo shutdown
e le sue opzioni di comando per attivare la stessa azione.
systemd non considera la modalità di salvataggio (che è quella che la gente del sistema ha rinominato la modalità utente singolo ) come uno stato di spegnimento del sistema e non è raggiungibile con nessuno di questi comandi. Opzione-less shutdown now
è uguale a poweroff
.
I BSD mantengono in gran parte la loro semantica degli anni '80. halt
e shutdown
quindi non sono molto equivalenti nei loro set di strumenti. halt
e reboot
sono un unico programma; e sono ancora di basso livello, immediati e drastici. Considerando shutdown
che poweroff
, e anche un singolo programma, fanno tutte le cose premurose come l'arresto programmato, la scrittura di wall
messaggi, le azioni di registrazione, la disabilitazione dell'accesso e così via.
Nei set di strumenti BSD, shutdown
/ poweroff
tradizionalmente finiva per invocare halt
/ reboot
per attuare il cambiamento finale dello stato del sistema. Il (spesso al giorno d'oggi errato) ha ricevuto la saggezza che " shutdown
execs halt
/ reboot
" in effetti continua su NetBSD e OpenBSD. Ma su FreeBSD / TrueOS / DragonFlyBSD è solo il caso se -o
si utilizza l' opzione. Su questi sistemi BSD, entrambi di questi programmi normalmente emanare il cambiamento di stato del sistema finale con l'invio di vari segnali ( INT
, USR1
, e USR2
) per elaborare 1 #. init
esegue tutta la gestione dello stato del sistema su questi sistemi.
Su tutti loro, l'opzione-meno shutdown now
non è equivalente a qualsiasi halt
, reboot
o poweroff
. Passa alla modalità utente singolo BSD , da cui è possibile tornare alla modalità multiutente .
shutdown
. Manuale del gestore di sistema . Pagine del manuale di NetBSD. 2011-11-04.reboot
,halt
. Pagine del manuale di OpenBSD. 2016/09/03.shutdown
. Pagine del manuale di FreeBSD. 2016/09/21.reboot
, halt
, fastboot
,fasthalt
. Pagine del manuale di FreeBSD. 2017/03/19.shutdown
. Manuale del gestore di sistema . Pagine del manuale di DragonFlyBSD. 2016/09/29.reboot
, halt
, fastboot
,fasthalt
. Manuale del gestore di sistema . Pagine del manuale di DragonFlyBSD. 2016/09/29.Nella gestione del sistema toolset gustare uno spuntino, halt
, fasthalt
, poweroff
, fastpoweroff
, reboot
, e fastboot
sono tutti un unico programma. È uno spessore di retrocompatibilità che normalmente si concatena shutdown
, l' opposto della saggezza ricevuta. L' --force
opzione rende invece la catena system-control
.
Quindi non c'è alcuna differenza (assente --force
) tra il halt
comando e il shutdown
comando (con l'opzione equivalente) in questo set di strumenti, poiché questa serie di comandi "Compatibilità BSD / System 5" è semplicemente un sottile strato di spessore sopra la parte superiore di shutdown
.
shutdown
. pagine di manuale di nosh toolset. Software.telinit, init, reboot, halt, haltsys, powercycle, poweroff, … fastboot, fasthalt, fastpowercycle, fastpoweroff, …
pagine di manuale di nosh toolset. Software.Come con nosh, nel set di strumenti di gestione del sistema upstart si applica l'opposto della saggezza BSD ricevuta. halt
, reboot
e poweroff
sono tutti un programma, che normalmente si concatena shutdown
; a meno che non --force
venga utilizzata l' opzione, il che la rende reboot()
chiamata al sistema stessa.
Quindi, ancora una volta, non c'è alcuna differenza (assente --force
) tra il halt
comando e il shutdown
comando (con l'opzione equivalente) in questo set di strumenti. Anche in questo caso, l'opzione-less shutdown now
(che nessuno dei due halt
, reboot
o poweroff
può finire per invocare mentre impostano tutte le opzioni) porta il sistema in modalità utente singolo invece di spegnerlo.
shutdown
(8) . Pagine del manuale di Ubuntu.reboot
(8), halt
(8), poweroff
(8) . Pagine del manuale di Ubuntu.init
+rc
Anche in questo set di strumenti il contrario di saggezza BSD ricevuto applica ed halt
e reboot
semplicemente catena shutdown
- a meno che il sistema è già in spegnimento o arresto "run-livelli", nel qual caso questi comandi effettivamente mettono in scena il cambiamento di stato del sistema finale. shutdown
a sua volta incatena a init
.
Quindi, di nuovo, non c'è differenza (a meno che il sistema non sia già in gran parte spento) tra halt
e shutdown
perché il primo invoca solo il secondo. E sì, ancora una volta, l'opzione-less shutdown now
(che nessuno di halt
, reboot
o poweroff
può finire invocando in quanto tutte le opzioni di set) porta il sistema in modalità utente singolo , piuttosto che chiuderlo.
Sospetto che ciò dipenda in qualche modo dalla versione di UNIX / Linux che stai utilizzando. Su Centos (e mi aspetto che altri Linux moderni) arrestino l'arresto delle chiamate (a condizione che tu non sia al runlevel 0 o 6), quindi il tuo sistema verrà spento in modo pulito. Su Solaris 10 l'arresto è più brutale, svuota semplicemente le cache del disco e spegne il sistema - non viene fatto alcun tentativo di eseguire script o arrestare le strutture smf .
Per coloro che usano AWS EC2: su AWS shutdown
arresta un'istanza, quando la halt
termina .
In Linux, "halt" e "reboot" sono alias del comando shutdown - shutdown -h
e shutdown -r
rispettivamente. L'arresto di Bareword presuppone generalmente -h.
aliases
nel senso di alias di shell, ma sì, halt
fondamentalmente solo chiama shutdown -h
e reboot
corre shutdown -r
. Notare che se si passa l' -f
opzione (force) a halt
o reboot
, nonshutdown
viene chiamata.
sendmail
A questo punto li equiparerei, per esempio, al comando - Come con gli MTA, in realtà non importa quale sistema init usi perché tutti riconosceranno entrambi shutdown
e halt
come tali.
sendmail
comando. È come il sendmail
comando, ma non nel modo in cui pensi.