Tiefe Einsichten des „Ubuntu Linux“ -Systems - sehen wir das?

Tiefe Einsichten des „Ubuntu Linux“ -Systems - sehen wir das?

Linux Wie wir wissen, ist ein Kernel und kein Betriebssystem, Schiff mit mehreren Verteilungen wie: Debian, Fedora, Ubuntu usw. und viele mehr. Ubuntu OS entwickelt von Mark Shuttleworth ist im Volksmund bekannt und von vielen weit verbreitet. Außerdem wird die neue Version von Tausenden von Entwicklern, die zu ihrer Entwicklung beitragen. Aber wie funktioniert es?? Was alle Prozesse, die Liste der Ereignisse zum Laufen und welche Bedeutung dieser Prozesse hat?

Ubuntu -Boot -Prozesserkenntnisse

Dieser Artikel würde Sie ein bisschen tief in Interna von führen Ubuntu OS Das sind sehr interessant und würden einem Anfänger helfen, sein Funktionieren vollständig zu verstehen.

Das System legen

Linux verfügt über einen Prozess für seine Funktionen, jeden einzelnen Systemdienst, einschließlich Stromverwaltung, Startaufnahme, Systemabsturzhandling ist ein Prozess, der eine Konfigurationsdatei in “enthält“ in “/etc/init„Das beschreibt das Ereignis, auf dem es ausgeführt und entsprechendes Ereignis wird, auf dem es seine Ausführung stoppen würde, und bei der es auch seine anderen Konfigurationsdateien verwaltet, die das Laufzeitverhalten in den Systemen beschreiben“/usw/Verzeichnis, das System so zu einem ereignisgesteuerten Ereignis macht.

Wenn Ereignisse generiert werden, sollte jemand da sein, um sie zu fangen und auszuführen?? Natürlich ist der Controller unser Hauptprozess, der als Eltern aller Prozesse mit Prozess -ID vorliegt 1 ich.e. drin. Dies ist der Prozess, der mit dem Start des Systems beginnt und nie stoppt. Dieser Prozess stirbt nur, sobald das System ausgeschaltet ist, da es keinen Prozess gibt, der der Elternteil ist.

Frühere Versionen von Ubuntu Vor 6.10 eingeschlossener alter Stil sysvinit Das wurde verwendet, um Skripte in “auszuführen“/etc/rcx.D”Verzeichnis für jedes Start und die Abschaltung des Systems. Aber danach Emporkömmling System ersetzte den alten Stil sysvinit System, bietet aber dennoch rückständige Kompatibilität dafür.

Die neuesten Ubuntu -Versionen haben dieses Upstart -System, aber seit seiner Entwicklung von Ubuntu 6.10 Es hat mehrere Überarbeitungen der aktuellen Version geworden 1.13.2 Wie am 4. September 2014. Das neueste Upstart -System hat 2 init Prozesse, eine für die Systemprozesse und eine andere, die die aktuelle angemeldete Benutzersitzung verwaltet und nur dann existiert, bis der Benutzer angemeldet ist, ebenfalls genannt wird X-Session drin.

Das gesamte System wurde als hierarchische System festgelegt, bestehend aus der Beziehung zwischen Ahnen und Kind während der gesamten Kraft, um das System abzuschalten.

Zum Beispiel: Eine kleine hierarchische Beziehung zwischen beiden Init -Prozessen ist: System init (1) -> Display Manager (Kernel Space) -> Anzeigemanager (Benutzerraum) -> Benutzer init (oder X-Session Init).

Die Konfigurationsdateien für Prozesse, die von System init verwaltet werden, wohnen in “/etc/init"Und für diejenigen, die von der Sitzung verwaltet wurden init in" in "/usr/share/upestart”(Gemäß den aktuellen Upstart -Versionen oben 1.12) und diese Konfigurationsdateien sind der Schlüssel zu vielen ausgegrabenen Geheimnissen über Prozesse, wie in diesem Artikel beschrieben.

Tiefer in die Hierarchie eingehen

Ubuntu erkennt zwei Arten von Prozessen:

  1. Kurzlebige Jobs (oder Arbeitsplätze für die Steigung).
  2. Langlebige Jobs (oder Arbeiten und Arbeiten).

Die Hierarchie, die im System erstellt wird. Beginnen wir zunächst von einer einfachen hierarchischen Beziehung zwischen den Prozessen, die das System zum Booten und Verständnis der Bedeutung jeder von ihnen machen.

Boothierarchie

Drin ist der erste Prozess, der das System mit Strom versorgt und unter klassifiziert wird Arbeit und Stay Job, da es nie getötet wird und nur die Init getötet wird.e. Init stirbt nur und das auch einmal pro Sitzung und das ist das Herunterfahren. Beim Einschalten generiert Init das allererste Ereignis auf dem System I.e. Start -up -Event. Jede Konfigurationsdatei in “/etc/init”Hat zwei Zeilen, die das Ereignis definieren, das den Prozess startet und aufhört. Diese Linien sind in der folgenden Abbildung so hervorgehoben:

Linux -Boot -Hierarchie

Dies ist eine Konfigurationsdatei eines Prozesses Failsafe-X und diese beginnen und stoppen unter den Bedingungen, beschreiben das Ereignis, auf dem der Prozess beginnt. Auf der Generierung von Startup -Ereignissen nach Init -Verfahren jene Prozesse, die Startup als Start in der Bedingung haben.

Die Prozesse, die mit dem Start-up beginnen, sind als untergeführt

1. Hostname - Dies ist ein Prozess, der das System seines Hostnamens in /etc /hostname nur mitteilt.

2. KMOD - Lädt die Kernelmodule i.e. Alle Treiber aus /etc /modules Datei.

3. Mountall - Dieser Prozess generiert viele Ereignisse und ist hauptsächlich für die Montage aller Dateisysteme im Start verantwortlich, einschließlich lokaler Dateisysteme und Remote -Dateisysteme.

Der /proc Die Datei wird auch durch genau diesen Prozess montiert und nach all der Montagearbeit ist das letzte von IT erzeugte Ereignisereignis, mit dem die Hierarchie weiter fortgesetzt wird.

4. Plymouth - Dieser Prozess führt beim Starten von Mountall aus und ist dafür verantwortlich, den schwarzen Bildschirm zu zeigen, der beim Systemstart angezeigt wird, das so etwas wie unten zeigt:

Linux -Startprozess

5. Plymouth-fähig - Zeigt an, dass Plymouth abgelaufen ist.

Im Folgenden finden Sie den Hauptprozess, andere, die ebenfalls zum Start ausführen Udev-Fallback-Graphics, usw. Kommen Sie zurück zur Boot -Hierarchie

1. drin zusammen mit der Generierung von Startup -Events.

2. Mountall Befestigungsdateisysteme, Plymouth (zusammen mit dem Start des Mountall) und KMOD-Ladekernmodule.

3. Lokales Filesystem Ereignis, das von Mountall erzeugt wird und DBUs läuft. (DBUS ist der systemweite Nachrichtenbus, der einen Sockel erstellt, in dem andere Prozesse miteinander kommunizieren können, indem Nachrichten an diesen Socket gesendet werden, und der Empfänger hört die Nachrichten auf diesem Socket zu und filtert die dafür bestimmten.).

4. Lokales Filesystem Zusammen mit dem gestarteten DBUS- und statischen Netzwerk-Ereignis, das durch das Prozessnetzwerk verursacht wird, das auch auf dem lokalen Akte-System-Event ausgeführt wird, führt der Netzwerkmanager zum Ausführen.

5. virtuelles Filesystem Das von Mountall generierte Ereignis führt dazu, dass Udev ausgeführt wird. (UDEV ist der Geräte-Manager für Linux, der die Hot-Plugging von Geräten verwaltet und für das Erstellen von Dateien in /Dev-Verzeichnis verantwortlich ist und diese auch verwaltet.) UDEV erstellt Dateien für RAM, ROM usw. in /dev verzeichnis. Der Mountall hat die Montage der virtuellen Filesysteme abgeschlossen und das Virtual-Datei-Datei-Datei-System für Ereignisse generiert, das die Montage von /Dev-Verzeichnis bedeutet.

6. Udev führt dazu, dass der Start-udev-Bridge ausgeführt wird, was bedeutet, dass das lokale Netzwerk erhöht ist. Nachdem Mountall das letzte Dateisystem beendet und das Dateisystemereignis generiert hat.

7. Dateisystem Das Ereignis zusammen mit dem statischen Network-Up-Ereignis führt dazu, dass der RC-Sysinit-Job ausgeführt wird. Hier kommt die Rückwärtskompatibilität zwischen älterem Sysvinit und Upstart…

9. rc-syssinit Fährt Telinit -Befehl aus, der dem System Runlevel mitteilt.

10. Nachdem der Runlevel erhalten wurde, führt der Init die Skripte aus, die mit 'beginnen'S' oder 'K"(Startjobs, die haben"S"Zu Beginn ihres Namens und töten diejenigen, die haben"K'Zu Beginn ihres Namens) im Verzeichnis /etc /rcx.D (wo 'X'ist der aktuelle Runlevel).

Diese kleine Reihe von Ereignissen führen dazu, dass das System jedes Mal beginnt, wenn Sie es einschalten. Und dieses Ereignislöser für Prozesse ist das einzige, was für die Erstellung der Hierarchie verantwortlich ist.

Ein weiteres Add-On zu oben ist die Ursache für die Ereignis. Welcher Prozess bewirkt, welches Ereignis auch in derselben Konfigurationsdatei des Prozesses angegeben ist, wie unten in diesen Zeilen gezeigt:

Linux -Prozessereignisse

Oben finden Sie einen Abschnitt der Konfigurationsdatei von Process Mountall. Dies zeigt die Ereignisse, die es emittiert. Der Name des Ereignisses ist einer, der dem Wort nachfolgt. 'Fall''. Das Ereignis kann entweder das in der Konfigurationsdatei wie oben definierte oder der Name des Prozesses zusammen mit dem Präfix "Start", "gestartet", "Stopping" oder "Stop" sein.

Hier definieren wir also zwei Begriffe:

  1. Ereignisgenerator: Eine, die die Zeile 'emittiert xxx' in seiner Konfigurationsdatei, in der xxx der Name des Ereignisses ist, das es besitzt oder generiert.
  2. Eventfänger7.

Somit folgt die Hierarchie und so die Abhängigkeit zwischen den Prozessen:

Eventgenerator (Eltern) -> Ereignisfänger (Kind) 

Fügen Sie der Hierarchie Komplexität hinzu

Bis jetzt müssen Sie verstanden haben, wie die Hierarchie von Eltern-Kind Die Abhängigkeit zwischen den Prozessen wird durch festgelegt Ereignisauslöser Mechanismus durch einen einfachen Stiefel -Up -Mechanismus.

Jetzt ist diese Hierarchie niemals eine Eins-zu-Eins-Beziehung, die nur ein Elternteil für ein Kind hat. In dieser Hierarchie haben wir möglicherweise einen oder mehrere Eltern für ein Kind oder ein Prozesse, der Eltern von mehr als einem Kind ist. Wie das erreicht wird?? Nun, die Antwort liegt in den Konfigurationsdateien selbst.

Linux -Prozess

Diese Zeilen werden aus dem Prozess - Netzwerk entnommen, und hier scheint der Start unter der Bedingung ein wenig zu komplex aus vielen Ereignissen, nämlich nämlich - Lokale Filesysteme, Udevtrigger, Container, Runlevel, Networking.

Local-Filesystems wird von Mountall emittiert, Udevtrigger ist der Name des Jobs, das Containerereignis wird von Container-Detect, Runlevel-Ereignis von RC-Sysinit ausgestrahlt, und Networking ist wieder ein Job.

In einer Hierarchie ist das Prozessnetzwerk von Mountall, Udevtrigger und Container-Kennzeichnungen, da es seine Funktionen nicht fortsetzen kann (Funktionieren des Prozesses sind alle Zeilen, die unter Skript- oder EXEC-Abschnitten in der Konfigurationsdatei des Prozesses definiert sind). Bis die obigen Prozesse ihre Ereignisse erzeugen.
Ebenso können wir einen Prozess als Elternteil von vielen haben, wenn das von einem Prozess erzeugte Ereignis von vielen zwischenstrahlt wird.

Unterscheidung von Arbeitsplätzen

Wie zuvor definiert, können wir entweder kurzlebig sein (oder Arbeit und Stiege Jobs) oder langlebig (oder bleiben und arbeiten) Jobs, aber wie man zwischen ihnen unterscheidet??

Die Jobs, die beide haben 'beginnen am' Und 'Aufhören"Bedingungen in ihren Konfigurationsdateien und haben ein Wort"Aufgabe'In ihrer Konfigurationsdatei sind Arbeit und Stiege Jobs, die mit dem generierten Ereignis beginnen, ihren Skript- oder EXEC -Abschnitt ausführen (während sie ausgeführt werden, blockieren sie die Ereignisse, die sie verursacht haben) und sterben anschließend die Ereignisse, die sie blockierten.

Diese Jobs, die nicht haben 'Aufhören'Bedingung in ihrer Konfigurationsdatei werden lange gelebt oder bleiben und arbeiten Jobs und sie sterben nie. Jetzt können die Aufenthalts- und Arbeit Jobs weiter eingestuft werden wie:

  1. Diejenigen, die keinen Respawn -Zustand haben und von Wurzelbenutzer getötet werden können.
  2. Diejenigen, die die Bedingung in ihrer Konfigurationsdatei respawnen und so nach dem Tod neu starten, es sei denn, ihre Arbeit wurde abgeschlossen.

Abschluss

Somit ist jeder Prozess in Linux ist von einigen abhängig und hat einige Prozesse, die davon abhängig sind, und diese Beziehung ist viele zu vielen und wird mit dem Upstart -System zusammen mit anderen Details des Prozesses spezifiziert.