Heim >php教程 >PHP开发 >Ausführliche Erläuterung des Linux-Shutdown-Befehls und ausführliche Erläuterung von init

Ausführliche Erläuterung des Linux-Shutdown-Befehls und ausführliche Erläuterung von init

高洛峰
高洛峰Original
2016-12-17 16:46:051735Durchsuche

Einige häufig verwendete Befehle zum Herunterfahren/Neustarten unter Linux sind Herunterfahren, Anhalten, Neustarten und Init. Sie können alle den Zweck erfüllen, das System neu zu starten, aber der interne Arbeitsprozess jedes Befehls ist unterschiedlich Ich hoffe, dass Sie verschiedene Befehle zum Herunterfahren flexibler verwenden können. ​

1. Der Shutdown-Befehl fährt das System sicher herunter.

Einige Benutzer fahren Linux herunter, indem sie die Stromversorgung direkt unterbrechen, was sehr gefährlich ist. Da sich Linux von Windows unterscheidet, laufen viele Prozesse im Hintergrund, sodass ein erzwungenes Herunterfahren dazu führen kann, dass die Daten des Prozesses verloren gehen, das System in einen instabilen Zustand versetzt wird und in einigen Systemen sogar die Hardware beschädigt wird.

Wenn Sie den Befehl zum Herunterfahren verwenden, bevor Sie das System herunterfahren, benachrichtigt der Systemadministrator alle angemeldeten Benutzer, dass das System heruntergefahren wird, und der Anmeldebefehl wird eingefroren, sodass neue Benutzer dies tun können nicht mehr anmelden. Es ist möglich, direkt herunterzufahren oder das Herunterfahren um einen bestimmten Zeitraum zu verzögern, und es ist auch möglich, neu zu starten. Dies wird dadurch bestimmt, dass alle Prozesse vom System gesendete Signale empfangen. Dies gibt Programmen wie vi Zeit, das aktuell bearbeitete Dokument zu speichern, und Programme wie Mail und News können normal beendet werden usw. Shutdown führt seine Aufgabe aus, indem es ein Signal an das Init-Programm sendet und es auffordert, den Runlevel zu ändern.

Runlevel 0 wird verwendet, um das System herunterzufahren [anzuhalten]

Runlevel 6 wird verwendet, um das System erneut zu aktivieren [Neustart]

Runlevel 1 wird verwendet, um das System in die Verwaltung zu versetzen. Möglich Status

Dies ist die Standardeinstellung. Es wird davon ausgegangen, dass beim Herunterfahren weder die Parameter -h noch -r angegeben werden. Wenn Sie wissen möchten, welche Aktionen während des Herunterfahrens (Halt) oder Neustarts (Neustart) durchgeführt wurden, können Sie die Runlevel-bezogenen Informationen in dieser Datei /etc/inittab Parameterbeschreibung sehen:

[ -. T] Erfordern Sie init, wie lange sie zu einem anderen Runlevel geschlossen werden sollen. init, aber verwenden Sie diese Option, um sich selbst herunterzufahren, und die Konsequenzen dieser Option sind oft nicht das, was Sie erwarten.   

[-c] Aktuellen Prozess abbrechen bricht den aktuell ausgeführten Herunterfahrvorgang ab, also natürlich diese Option hat keinen Zeitparameter, aber Sie können einen Benutzerparameter eingeben, um die Nachricht zu erklären. Diese Nachricht wird an jeden Benutzer gesendet [-f] Ignorieren Sie fsck beim Neustart des Rechners.

[-time] Stellen Sie die Zeit vor dem Herunterfahren ein. und stoppt den Kernel, nachdem der Dateisystem-Schreibvorgang abgeschlossen ist.

Parameterbeschreibung: > [-n] Verhindert synchrone Systemaufrufe, die nach dem Patchen der Root-Partition mit fsck verwendet werden, um zu verhindern, dass der Kernel die gepatchte Datei überschreibt Superblock mit einer älteren Version des Superblocks.

[-w] und Kein echter Neustart oder Herunterfahren, schreiben Sie einfach wtmp [/var/log/wtmp]-Datensätze

[-d] Do keine wtmp-Datensätze schreiben [in Option [-n] enthalten]

[-f] Herunterfahren oder Neustart erzwingen, ohne Shutdown aufzurufen

[-i] Schalten Sie alle Netzwerkschnittstellen aus, bevor Sie herunterfahren (oder Neustart).

Dies ist die Standardoption. Der Vorgang des Neustarts ist fast derselbe wie beim Herunterfahren Der Host muss neu gestartet werden, und seine Parameter ähneln halt 🎜>
4.init ist der Vorfahre aller Prozesse und seine Prozessnummer ist immer 1, sodass das Senden des TERM-Signals an init alle Benutzerprozesse und den Daemon beendet Prozesse usw. Das Herunterfahren nutzt diesen Mechanismus. init definiert 8 Runlevel

init 0 ist Herunterfahren

init 1 ist Neustart

Es gibt eine lange Geschichte über init, daher werde ich sie hier nicht beschreiben. Es gibt auch den Befehl telinit, der die Ausführungsebene von init ändern kann. Beispielsweise kann telinit -iS dazu führen, dass das System in den Einzelbenutzermodus wechselt, und die Informationen und Wartezeiten beim Herunterfahren werden nicht abgerufen.

Detaillierte Erklärung von init

1. INIT: init ist eines der unverzichtbaren Programme im Linux-Systembetrieb.

Der sogenannte Init-Prozess ist ein vom Kernel gestarteter Prozess auf Benutzerebene. Nachdem sich der Kernel selbst gestartet hat (in den Speicher geladen wurde, mit der Ausführung begonnen hat und alle Gerätetreiber und Datenstrukturen usw. initialisiert hat), schließt er den Startvorgang ab, indem er eine Programminitialisierung auf Benutzerebene startet. Daher ist init immer der erste Prozess (seine Prozessnummer ist immer 1). Der Kernel sucht an mehreren Stellen nach init, wo es in der Vergangenheit verwendet wurde. Der korrekte Speicherort (für Linux-Systeme) ist /sbin/init. Wenn der Kernel init nicht finden kann, versucht er, /bin/sh auszuführen. Wenn dies fehlschlägt, kann das System nicht gestartet werden.  

2. Runlevel  

Einfach ausgedrückt ist der Runlevel der Funktionsstand, auf dem das Betriebssystem gerade läuft. Die Stufen reichen von 1 bis 6 und haben unterschiedliche Funktionen. Die Definitionen der verschiedenen Ausführungsebenen lauten wie folgt: (Sie können auf /etc/inittab in Red Hat Linux verweisen)

# 0 – Herunterfahren (nie initdefault auf 0 setzen)

# 1 – Einzelbenutzermodus

# 2 – Mehrbenutzer, kein NFS

# 3 – Vollständiger Mehrbenutzermodus (Standard-Runlevel)

# 4 – Nicht verwendet

​ # 5 – X11 (xwindow)

​ # 6 – Neustart (nie initdefault auf 6 setzen) ​

Diese Ebenen sind in der Datei /etc/inittab angegeben. Diese Datei ist die Hauptdatei, nach der das Init-Programm sucht. Der erste Dienst, der ausgeführt wird, ist die Datei im Verzeichnis /etc/rc.d. In den meisten Linux-Distributionen befindet sich das Startskript in /etc/rc.d/init.d. Diese Skripte werden mit dem Befehl ln mit dem Verzeichnis /etc/rc.d/rcn.d verknüpft. (n ist hier Runlevel 0-6)

3. Runlevel-Konfiguration

Die Runlevel-Konfiguration wird in der Zeile /etc/inittab durchgeführt, wie unten gezeigt:

12: 2: wait: /etc/init.d/rc 2  

Das erste Feld ist eine willkürlich angegebene Bezeichnung;

Das zweite Feld gibt an, dass diese Zeile für das Ausführen dieser Ebene gilt (hier). ist 2);

Das dritte Feld gibt an, dass init beim Betreten der Ausführungsebene den Befehl im vierten Feld einmal ausführen und auf das Ende des Befehls warten soll. Der Befehl /etc/init.d/rc führt alle Befehle aus, die zum Starten und Beenden der Eingabe erforderlich sind, um in Runlevel 2 zu gelangen.

Der Befehl im vierten Feld erledigt alle „Aufgaben“ beim Festlegen des Runlevels. Es startet Dienste, die nicht mehr ausgeführt werden, und beendet Dienste, die nicht mehr innerhalb des neuen Runlevels ausgeführt werden sollen. Abhängig von der Linux-Version sind auch die spezifischen verwendeten Befehle unterschiedlich und auch die Runlevel-Konfiguration ist unterschiedlich.

Wenn init startet, sucht es nach einer Codezeile in /etc/inittab. Diese Zeile gibt die Standardausführungsebene an: id: 2: initdefault:

Sie können init zum Starten auffordern Bei der Eingabe eines nicht standardmäßigen Runlevels wird dies durch die Angabe eines „einzelnen“ oder „Notfall“-Befehlszeilenarguments für den Kernel erreicht. Beispielsweise kann die Spezifikation von Kernel-Befehlszeilenparametern über LILO erfolgen. Auf diese Weise können Sie den Einzelbenutzermodus (d. h. Runlevel 1) auswählen. Während das System läuft, kann der Befehl telinit die Ausführungsebene ändern. Wenn sich die Ausführungsebene ändert, führt init den entsprechenden Befehl aus /etc/inittab aus.

4. Spezielle Konfigurationen in /etc/inittab

Es gibt mehrere spezielle Funktionen in /etc/inittab, die es init ermöglichen, spezielle Ereignisse wieder zu aktivieren. Diese Besonderheiten werden mit speziellen Schlüsselwörtern im dritten Feld gekennzeichnet. Zum Beispiel:

1. powerwait Ermöglicht init, das System herunterzufahren, wenn die Stromversorgung unterbrochen wird. Voraussetzung ist eine USV und eine Software, die die USV überwacht und Init benachrichtigt, wenn die Stromversorgung unterbrochen wurde.

2. ctrlaltdel Ermöglichen Sie init, das System neu zu starten, wenn der Benutzer die Tastenkombination Strg + Alt + Entf auf der Konsolentastatur drückt. Beachten Sie, dass der Systemadministrator die Tastenkombination Strg + Alt + Entf so konfigurieren kann, dass sie sich anders verhält, z. B. ignoriert, wenn das System an einem öffentlichen Ort platziert wird.

3. sysinit Befehl, der beim Systemstart ausgeführt werden soll. Mit diesem Befehl wird beispielsweise /tmp gelöscht.

Die obige Liste der speziellen Schlüsselwörter ist noch nicht vollständig. Einzelheiten zu anderen Schlüsselwörtern und deren Verwendung finden Sie auf Ihrer Inittab-Manpage.



Ausführlichere Erläuterungen zu Linux-Befehlen zum Herunterfahren und Initialisierungsdetails finden Sie auf der chinesischen PHP-Website für verwandte Artikel!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn