Quelle est la différence entre les commandes halt
et shutdown
?
Généralement, on utilise la commande shutdown
. Il permet un délai et un message d'avertissement avant l'arrêt ou le redémarrage, ce qui est important pour l'administration système des serveurs Shell multi-utilisateurs; il peut fournir aux utilisateurs un préavis du temps d'arrêt.
En tant que tel, la commande d'arrêt doit être utilisée comme ceci pour arrêter/éteindre immédiatement l'ordinateur (sur Linux et FreeBSD au moins):
shutdown -h now
Ou pour le redémarrer avec un avertissement personnalisé de 30 minutes à l'avance:
shutdown -r +30 "Planned software upgrades"
Après le délai, shutdown
indique à init
de passer au niveau d'exécution 0 (arrêt) ou 6 (redémarrage). (Notez que l'omission de -h
ou -r
fera passer le système en mode mono-utilisateur (niveau d'exécution 1), ce qui tue la plupart des processus du système mais ne l'arrête pas réellement; il permet toujours à l'administrateur de rester connecté en tant que root.)
Une fois les processus système arrêtés et les systèmes de fichiers démontés, le système s'arrête/s'éteint ou redémarre automatiquement. Pour ce faire, utilisez la commande halt
ou reboot
, qui synchronise les modifications sur les disques, puis effectue l'arrêt/la mise hors tension ou le redémarrage.
Sous Linux, si halt
ou reboot
est exécuté alors que le système n'a pas encore démarré le processus d'arrêt, il invoquera automatiquement la commande shutdown
plutôt que d'exécuter directement l'action prévue. Cependant, sur des systèmes tels que FreeBSD , ces commandes enregistrent d'abord l'action dans wtmp
et ensuite immédiatement effectuer eux-mêmes l'arrêt/redémarrage, sans tuer les processus ni démonter les systèmes de fichiers.
Dans les années 1980, les BSD avaient halt
, reboot
et shutdown
. System 5 UNIX avait un ensemble d'outils de compatibilité BSD. Mais nativement, il avait sa propre commande différente, shutdown
; et n'avait pas halt
ou reboot
du tout. (Certaines variantes du système 5 avaient des choses comme SCO haltsys
de XENIX.)
Les commandes BSD halt
et reboot
étaient de bas niveau, drastiques et immédiates. La manière attentionnée d'arrêter un système BSD était la commande shutdown
, qui a fait toutes les choses que l'on s'attend à ce qu'il se produise: wall
messages aux utilisateurs, services gracieusement tués, entrées de journal écrites, connexions désactivées , et ainsi de suite.
Alors que les BSD étaient en grande partie à l'origine de la sagesse reçue selon laquelle "shutdown
execs halt
/reboot
", et que ces derniers devaient être utilisés avec précaution; c'était le monde du système 5 où les gens ont appris l'habitude contraire que halt
/reboot
n'étaient que des raccourcis pratiques et rien de plus: /usr/ucb/halt
, du "BSD Compatibility Package", n'était pas différent en effet de shutdown -h
. Ils ont tous les deux fini par faire init 0
.
halt
. 1982-05-11. 4.2 Manuel BSD.haltsys
. 2005-06-03. SCO OpenServer.De nos jours, nous avons une gamme de jeux d'outils de gestion de système possibles. Les BSD ont toujours leurs outils, bien qu'ils aient été purgés de tout AT & Tism possible dans les années 1990. Miquel van Smoorenburg en 1992 (re) a écrit un Linux init
+ rc
, et leurs outils associés, que les gens appellent maintenant "System 5 init", même si ce n'est pas réellement le logiciel d'UNIX System 5 (et n'est pas ' t juste init
). Il y a aussi systemd , pstart , et nosh , qui ont chacun leurs propres implémentations of halt
, reboot
, fasthalt
, fastboot
, etc.
Les outils ont également grandi et changé. Il y a maintenant une commande poweroff
, non présente dans les systèmes d'exploitation des années 1980 parce que les unités centrales de traitement sur la plupart des machines contemporaines n'avaient aucun moyen de contrôler leurs alimentations. Les jeux d'outils Linux en particulier ont acquis les commandes BSD; mais comme les outils de compatibilité BSD sur UNIX System 5, ils ne sont pas exactement des workalikes et les choses ont été largement aplaties.
Cet aplatissement nous a amenés au point où halt
et shutdown
sont surtout identiques. Mais les détails exacts varient d'un ensemble d'outils à l'autre et les mécanismes de chaque ensemble d'outils sont tous légèrement différents.
Cela nous a également amenés à la position légèrement embarrassante où cet ensemble de commandes est devenu si festonné d'options de compatibilité qu'il permet désormais aux utilisateurs de donner des instructions contradictoires aux ordinateurs comme reboot --halt
Et poweroff --reboot
, Comme je dans la page de manuel des commandes nosh halt
, fasthalt
, reboot
, fastboot
et poweroff
. ☺
halt
, reboot
, poweroff
, telinit
et shutdown
sont tout un programme. Il s'agit en fait du propre programme systemctl
de systemd. Il possède plusieurs analyseurs de ligne de commande pour les différentes syntaxes de ligne de commande de ces commandes, ainsi que la sienne, mais après cela, il s'intègre largement dans un chemin de code en interne. Il n'y a aucune différence entre l'utilisation de halt
et ses options de commande pour déclencher une action et l'utilisation de shutdown
et ses options de commande pour déclencher la même action.
systemd ne considère pas mode de secours (ce que les gens de systemd ont renommé mode mono-utilisateur) comme étant un état système arrêté, et il n'est pas accessible avec l'une de ces commandes. shutdown now
Sans option est identique à poweroff
.
Les BSD conservent en grande partie leur sémantique des années 80. halt
et shutdown
sont donc très pas équivalents dans leurs ensembles d'outils. halt
et reboot
sont un seul programme; et sont encore de bas niveau, immédiats et drastiques. Alors que shutdown
et poweroff
, également un seul programme, font toutes les choses attentionnées comme l'arrêt planifié, l'écriture de messages wall
, les actions de journalisation, la désactivation de la connexion, etc.
Dans les jeux d'outils BSD, shutdown
/poweroff
finissait traditionnellement par invoquer halt
/reboot
pour appliquer la modification finale de l'état du système. Le (souvent de nos jours incorrect) a reçu la sagesse que "shutdown
execs halt
/reboot
" est en fait toujours valable sur NetBSD et OpenBSD. Mais sur FreeBSD/TrueOS/DragonFlyBSD, ce n'est le cas que si l'option -o
Est utilisée. Sur ces BSD, les deux de ces programmes normalement activez le changement d'état du système final en envoyant divers signaux (INT
, USR1
Et USR2
) Pour traiter # 1. init
fait tous la gestion de l'état du système sur ces systèmes.
Sur chacun d'eux, shutdown now
Sans option n'est équivalent à aucun de halt
, reboot
ou poweroff
. Il passe au BSD mode mono-utilisateur, à partir duquel on peut passer retour à mode multi-utilisateur.
shutdown
. Manuel du gestionnaire système. Pages du manuel NetBSD. 2011-11-04.reboot
, halt
. Pages du manuel OpenBSD. 2016-09-03.shutdown
. Pages du manuel FreeBSD. 2016-09-21.reboot
, halt
, fastboot
, fasthalt
. Pages du manuel FreeBSD. 2017-03-19.shutdown
. Manuel du gestionnaire système. Pages du manuel DragonFlyBSD. 2016-09-29.reboot
, halt
, fastboot
, fasthalt
. Manuel du gestionnaire système. Pages du manuel DragonFlyBSD. 2016-09-29.Dans le jeu d'outils de gestion du système nosh, halt
, fasthalt
, poweroff
, fastpoweroff
, reboot
et fastboot
sont tous un seul programme. C'est une cale de compatibilité descendante qui enchaîne normalement simplement à shutdown
, le opposé de sagesse reçue. L'option --force
Permet de la chaîner à system-control
À la place.
Il n'y a donc pas de différence (absente --force
) Entre la commande halt
et la commande shutdown
(avec l'option équivalente) dans cet ensemble d'outils, car cet ensemble de commandes "Compatibilité BSD/System 5" est simplement une fine couche de calage sur le haut de shutdown
.
shutdown
. pages de manuel de nosh toolset. Logiciels.telinit, init, reboot, halt, haltsys, powercycle, poweroff, … fastboot, fasthalt, fastpowercycle, fastpoweroff, …
pages de manuel du jeu d'outils. Logiciels.Comme avec nosh, dans l'ensemble d'outils de gestion de système parvenu à l'opposé de la sagesse BSD reçue s'applique. halt
, reboot
et poweroff
sont tous un seul programme, qui normalement s'enchaîne à shutdown
; à moins que l'option --force
ne soit utilisée, ce qui lui fait appeler le système reboot()
lui-même.
Donc, encore une fois, il n'y a pas de différence (absente --force
) Entre la commande halt
et et la commande shutdown
(avec l'option équivalente) dans cet ensemble d'outils. Encore une fois, l'option sans $ shutdown now
(Dont aucun parmi halt
, reboot
ou poweroff
peut finir par invoquer car ils définissent tous les options) place le système en mode utilisateur unique plutôt que le fermer.
shutdown
(8) . Pages de manuel Ubuntu.reboot
(8), halt
(8), poweroff
(8) . Pages de manuel Ubuntu.init
+ rc
toolsetEncore une fois, dans cet ensemble d'outils, l'opposé de la sagesse BSD reçue s'applique et halt
et reboot
se connectent simplement à shutdown
- à moins que le système ne soit déjà à la mise hors tension ou arrête les "niveaux d'exécution", auquel cas ces commandes déclenchent réellement le changement d'état du système final. shutdown
à son tour enchaîne à init
.
Donc, encore une fois, il n'y a pas de différence (sauf si le système est déjà en grande partie arrêté) entre halt
et shutdown
car le premier appelle simplement le dernier. Et oui, encore une fois, shutdown now
Sans option (dont aucun parmi halt
, reboot
ou poweroff
peut finir par invoquer car ils définissent toutes les options) amène le système en mode utilisateur unique plutôt que de le fermer.
Je soupçonne que cela dépend quelque peu de la version d'UNIX/Linux que vous utilisez. Sur Centos (et j'exécute d'autres Linux modernes), arrêtez l'arrêt des appels (à condition que vous ne soyez pas à niveau d'exécution 0 ou 6) afin que votre système soit arrêté proprement. Sous Solaris 10, l'arrêt est plus brutal, il vide simplement les caches de disque et met le système hors tension - aucune tentative n'est exécutée pour exécuter des scripts ou arrêter les installations smf .
Pour ceux qui utilisent AWS EC2: sur AWS shutdown
arrête une instance, lorsque halt
se termine la.
Sous linux, "stop" et "reboot" sont des alias de la commande shutdown - shutdown -h
et shutdown -r
respectivement. L'arrêt de Bareword suppose généralement -h.