GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Der Unterschied zwischen diesen Befehlen zum Herunterfahren eines Linux-Servers?

Lesen von „Was ist der Unterschied zwischen den Befehlen Halt und Shutdown?“ , habe ich im Allgemeinen eine Vorstellung davon, was der Befehl shutdown macht, mit oder ohne -h/-r-Optionen.

Der Befehl „halt“ schaltet das System auf Runlevel 0
des Systems aus.

Der „shutdown“-Befehl bewirkt ein Herunterfahren des Systems auf Runlevel
1 ohne -h- oder -r-Befehl.

Was ist mit dem Befehl „poweroff“, geht er in Runlevel 0 oder 1?
Ist dies der einzige Hauptunterschied zwischen diesen drei Befehlen?

Akzeptierte Antwort:

Und jetzt die systemd-Antwort.

Sie verwenden gemäß dem Tag in Ihrer Frage Red Hat Enterprise Linux. Seit Version 7 verwendet das systemd. Keine der anderen Antworten ist für die Welt von systemd richtig; noch nicht einmal einige der Annahmen in Ihrer Frage.

  • Vergessen Sie Runlevels; Sie existieren, aber nur als Kompatibilitäts-Shims. Die systemd-Dokumentation gibt an, dass das Konzept „obsolet“ ist. Wenn Sie beginnen, diese Dinge auf einem systemd-Betriebssystem zu lernen, beginnen Sie nicht dort.
  • Vergiss die Handbuchseite, die Marcelm zitiert hat; Es stammt überhaupt nicht aus dem richtigen Toolset und ist eine Beschreibung des Befehls eines anderen Toolsets, der für Systemds falsch ist. Es ist der für den halt Befehl vom van Smoorenburg „System 5“ init Dienstprogramme.
  • Ignorieren Sie die Anweisungen, die /sbin/halt enthalten ist ein symbolischer Link zu /sbin/reboot; Das ist bei systemd nicht der Fall. Es gibt keinen separaten reboot Programm überhaupt.
  • Ignorieren Sie die Anweisungen, die halt oder reboot Rufen Sie ein shutdown auf Programm mit Kommandozeilenargumenten; sie sind auch nicht wahr mit systemd. Es gibt kein separates shutdown Programm überhaupt.

Jedes Systemverwaltungs-Toolset hat seine Version dieser Dienstprogramme. systemd, Emporkömmling, nosh, van Smoorenburg init , und BSD init alle haben ihren eigenen halt , poweroff , und so weiter. Bei jedem sind ihre Mechaniken etwas anders. Ebenso ihre Handbuchseiten.

Im systemd-Toolset halt ,poweroff ,reboot , telinit , und shutdown sind alle symbolische Links zu /bin/systemctl . Sie sind alle Abwärtskompatibilitäts-Shims, die einfach Abkürzungen zum Aufrufen der primären Befehlszeilenschnittstelle von systemd sind:systemctl . Sie sind alle auf dieselbe Single abgebildet (und sind es tatsächlich). Programm. (Konventionell teilt ihr die Shell mit, von welchem ​​Namen sie aufgerufen wurde.)

Ziele, keine Runlevel

Die meisten dieser Befehle sind Abkürzungen für die Angabe von systemd unter Verwendung von systemctl , zu isolieren ein bestimmtes Ziel . Isolation wird im systemctl erklärt Handbuchseite (siehe dort), kann aber für die Zwecke dieser Antwort so betrachtet werden, als würde man ein Ziel starten und alle anderen stoppen. Die in systemd verwendeten Standardziele sind in systemd.special aufgeführt (8) Handbuchseite.

Die Diagramme zum bootup (7) Handbuchseite im Systemd-Toolset, insbesondere die letzte, zeigen, dass es drei „endgültige“ Ziele gibt, die hier relevant sind:

  • halt.target — Sobald das System den Zustand der vollständigen Isolierung dieses Ziels erreicht hat, wird es den reboot(RB_HALT_SYSTEM) aufgerufen haben Systemaufruf. Der Kernel wird versucht haben, ein ROM-Überwachungsprogramm aufzurufen, oder einfach die CPU angehalten haben (unter Verwendung eines geeigneten Mechanismus).
  • reboot.target — Sobald das System den Zustand der vollständigen Isolierung dieses Ziels erreicht hat, wird es den reboot(RB_AUTOBOOT) aufgerufen haben Systemaufruf (oder das Äquivalent mit der magischen Befehlszeile). Der Kernel wird versucht haben, einen Neustart auszulösen.
  • poweroff.target — Sobald das System den Zustand der vollständigen Isolierung dieses Ziels erreicht hat, wird es den reboot(RB_POWER_OFF) aufgerufen haben Systemaufruf. Der Kernel wird, wenn möglich, versucht haben, das System von der Stromversorgung zu trennen.
Verwandte:Wie führe ich einen Befehl aus, der das Umleiten oder Weiterleiten mit sudo beinhaltet?

Diese sind die Dinge, an die Sie als endgültige Systemzustände denken sollten, nicht die Ausführungsebenen. Beachten Sie aus dem Diagramm, dass das systemd-Zielsystem selbst Dinge codiert, die in anderen Systemen eher implizit als explizit sind:wie die Vorstellung, dass jedes dieser endgültigen Ziele das shutdown.target umfasst target, sodass man Dienste beschreibt, die vor dem Herunterfahren gestoppt werden müssen, indem man sie in Konflikt bringt das shutdown.target Ziel.

systemctl versucht Anfragen an systemd-logind zu senden wenn der aufrufende Benutzer nicht der Superuser ist. Es übergibt auch verzögertes Herunterfahren an systemd-shutdownd . Und einige Abkürzungen lösen wall aus Benachrichtigungen. Abgesehen von diesen Komplexitäten, die diese Antwort um ein Vielfaches verlängern würden, vorausgesetzt, Sie sind derzeit der Superuser und fordern keine geplante Aktion an:

  • systemctl isolate halt.target hat die Abkürzungen:
    • shutdown -H now
    • systemctl halt
    • schlichter schmuckloser halt
  • systemctl isolate reboot.target hat die Abkürzungen:
    • shutdown -r now
    • telinit 6
    • systemctl reboot
    • einfacher, schmuckloser reboot
  • systemctl isolate poweroff.target hat die Abkürzungen:
    • shutdown -P now
    • telinit 0
    • shutdown now
    • systemctl poweroff
    • schlichtes schmuckloses poweroff
  • systemctl isolate rescue.target hat die Abkürzungen:
    • telinit 1
    • systemctl rescue
  • systemctl isolate multi-user.target hat die Abkürzungen:
    • telinit 2
    • telinit 3
    • telinit 4
  • systemctl isolate graphical.target hat die Kurzform:
    • telinit 5

Nach dem Analysieren der verschiedenen unterschiedlichen Befehlszeilensyntaxen landen diese schließlich alle in denselben Codepfaden innerhalb von systemctl Programm.

Hinweise:

  • Das traditionelle Verhalten von Option-less shutdown now war, in den Einzelbenutzermodus zu wechseln . Dies ist bei systemd nicht der Fall. rescue.target — Einzelbenutzermodus wird in Rettungsmodus umbenannt in systemd — ist mit shutdown nicht erreichbar Befehl.
  • telinit wirklich alle diese runlevelN.target und default.target symbolische Links im Dateisystem, die die Handbuchseiten beschreiben. Die oben genannten Mappings sind in systemctl fest verdrahtet Programm, in einer Tabelle.
  • systemd hat keine Ahnung von einem aktuellen Runlevel . Die Ausführung dieser Befehle ist nicht abhängig von „wenn Sie sich in Runlevel N befinden „.
  • Der --force Option zum halt , reboot , und poweroff Befehle ist dasselbe wie --force --force zu sagen zum systemctl halt , systemctl reboot und systemctl poweroff Befehle. Dies macht systemctl versuchen Sie, reboot() aufzurufen direkt. Normalerweise versucht es nur, Ziele zu isolieren.
  • telinit ist nicht dasselbe wie init . Sie sind verschiedene Programme in der systemd-Welt, wobei letzteres ein anderer Name für systemd ist Programm, nicht für systemctl Programm. Das systemd Das Programm ist nicht unbedingt mit irgendeiner Van-Smoorenburg-Kompatibilität kompiliert und beschwert sich auf einigen systemd-Betriebssystemen darüber, dass es falsch aufgerufen wird, wenn man init N .

Weiterführende Literatur

  • Gibt es gute Gründe, das System anzuhalten, ohne die Stromversorgung zu unterbrechen?
  • Warum führt „init 0“ bei der Arch-Installation zu „überschüssigen Argumenten“?
  • Stephen Wadeley (2014). „8. Verwalten von Diensten mit systemd“ Red Hat Enterprise Linux 7 Handbuch für Systemadministratoren . Red Hat.
  • Lennart Pöttering (2013-10-07). systemctl . systemd Handbuchseiten. freedesktop.org.
  • Lennart Pöttering (2013-10-07). systemd.special . systemd Handbuchseiten. freedesktop.org.
  • Lennart Pöttering (2013-10-07). bootup . systemd Handbuchseiten. freedesktop.org.
  • Jonathan de Boyne Pollard (2018). init . Nosh-Leitfaden . Software.

Linux
  1. Lernen Sie den Unterschied zwischen den Befehlen „su“ und „su -“ in Linux kennen

  2. Unterschied zwischen den Befehlen „su“ und „su -“ in Linux

  3. 3 Linux-Befehle zum Herunterfahren des Systems und Sie können es einfach tun

  4. 3 Nützliche Linux-Befehle für Systemadministratoren

  5. Unterschied zwischen 'ifconfig'- und 'ip'-Befehlen

Wählen Sie das beste Dateisystem für Ihr Linux

Die 40 nützlichen Linux-Server-Befehle für Anfänger und Profis

Die 50 häufig verwendeten Linux-FTP-Befehle für den Neuling

Graylog-Überwachungsserver unter Ubuntu Linux für Überwachungsserver/-dienste

Die 15 besten Linux-Emulatoren für Windows-Systeme

Die 20 besten Bioinformatik-Tools für Linux-Systeme