web-dev-qa-db-fra.com

Quelle est la différence entre les commandes Halt et Shutdown?

Quelle est la différence entre les commandes halt et shutdown?

100
wassimans

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.

80
PleaseStand

Le passé

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.

Lectures complémentaires

Aujourd'hui

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. ☺

Le jeu d'outils Systemd

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.

Lectures complémentaires:

Les BSD

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.

Lectures complémentaires:

Le jeu d'outils Nosh

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.

Lectures complémentaires:

Le jeu d'outils parvenu

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.

Lectures complémentaires:

Le système Linux 5 init + rc toolset

Encore 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.

52
JdeBP

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 .

11
user591

Pour ceux qui utilisent AWS EC2: sur AWS shutdownarrête une instance, lorsque haltse termine la.

3
dveim

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.

0
Shadur