Wird die Datei / etc / inittab von oben nach unten gelesen?

1442
PeanutsMonkey

Wenn der init-Prozess ausgeführt wird, nachdem der Kernel geladen wurde, liest er die Datei / etc / inittab in einem Top-Down-Ansatz, dh er führt jede Zeile so aus, wie sie in der Datei erscheint.

Wenn ja und basierend auf meinem Lesen und Verstehen, bedeutet dies, dass es den dokumentierten Run-Level erreicht und dann den sysinit-Prozess startet oder umgekehrt?

Zum Beispiel sind die häufigsten Beispiele, die ich gesehen habe

id:3:initdefault:  # System initialization. si::sysinit:/etc/rc.d/rc.sysinit 
3

2 Antworten auf die Frage

5
Andrew M.

Beachten Sie zunächst das Format von inittab:

Identifier:RunLevel:Action:Command 

Der Schlüsselpunkt hier ist die runlevel. Gegeben der folgende Beispielcode:

a:3:: b:123:: c:23:: d:123:: e:23:: 

Dann ist die Reihenfolge der Ausführung der verschiedenen IDs ab runlevel1:

init 1: b d init 2: c e init 3: a overall: b d c e a 

Wie Sie sehen, werden sie in der Reihenfolge ausgeführt, in der sie in der Datei aufgeführt sind, gruppiert nach runlevel ! Denken Sie auch daran, wenn sich der Bezeichner nicht im angegebenen Runlevel befindet, wird ein a SIGTERMund dann ein a ausgegeben SIGKILL.

M - Ich verstehe nicht ganz, warum Sie für jeden Bezeichner mehrere Runlevels hätten. PeanutsMonkey vor 12 Jahren 0
Der Runlevel sagt "nur die für diesen Runlevel angegebenen Elemente ausführen". Wenn ich zum Beispiel "init 3" sage (auf Runlevel 3 verschieben), wird "a" gestartet. Wenn ich 'init 2' sage (auf Runlevel 2 verschieben), dann wird 'a' getötet, da es nicht so eingestellt ist, dass es auf diesem Runlevel läuft. Andrew M. vor 12 Jahren 0
Ich nehme an, wenn Sie "Artikel" sagen, meinen Sie Dienstleistungen oder Prozesse. Ist das richtig? PeanutsMonkey vor 12 Jahren 0
Sorry, ja, ich meine Befehle. Andrew M. vor 12 Jahren 0
Was meinen Sie mit `Wenn der Bezeichner nicht im angegebenen Runlevel ist, wird ihm ein SIGTERM und dann ein SIGKILL ausgegeben. PeanutsMonkey vor 12 Jahren 0
Wenn Sie von einem Runlevel zum nächsten wechseln und der angegebene Befehl nicht zulässig ist, wird ein "SIGTERM" ausgegeben (was "Möchten Sie bitte jetzt enden? Danke!"), Aber wenn er nicht antwortet wird ein "SIGKILL" ausgegeben, der den Speicher- und Prozessraum zwangsweise aufhebt. Ich glaube, die durchschnittliche Zeit beträgt ~ 10 Sekunden, aber die meisten Prozesse auf dieser Ebene werden sich gut verhalten. Andrew M. vor 12 Jahren 1
Wenn Sie "Wenn der angegebene Befehl nicht zulässig ist" sagen, was meinen Sie damit? PeanutsMonkey vor 12 Jahren 0
Stellen Sie sich den Init-Daemon als einfach vor, um verschiedene Zustände der Maschine zu definieren. Das heißt, "dies ist der Ausgangspunkt für dieses Betriebssystem" auf einem beliebigen Runlevel. [Dieser Link] (http://www.linfo.org/runlevel_def.html) kann Ihnen ein besseres Verständnis vermitteln. Andrew M. vor 12 Jahren 0
@AndreM, aber init 2 soll b, c, d, e statt nur c, e ausführen? Ich frage, weil ich Runlevel 2 an diesen 4 Stellen sehen kann. Lunar Mushrooms vor 10 Jahren 0
@LunarMushrooms: Nein, weil b und d bereits auf Runlevel 1 gestartet wurden. Andrew M. vor 10 Jahren 1
0
Rich Horn

Es ist kein Skript, das in einer bestimmten Reihenfolge abgearbeitet wird. Es ist eine Konfigurationsdatei, die dem System mitteilt, welches Skript / welche Befehle für ein bestimmtes Ereignis oder eine bestimmte Ausführungsebene ausgeführt werden sollen. Die Reihenfolge der Einträge in der Datei macht keinen Unterschied, und Sie können für jede Ausführungsebene mehrere Skripts oder Befehle verwenden.

Die erste Zeile, in der Sie "id: 3: initdefault:" anzeigen, teilt dem System mit, dass die Standardausführungsebene für die meisten Varianten 3 => Mehrbenutzermodus ist.

Die Zeile "si :: sysinit: ..." weist das System an, das System /etc/rc.d/rc/sysinit bei der Systeminitialisierung auszuführen (wird beim Systemstart ausgeführt).

Wenn Sie inittab eintippen, sollten Sie eine Liste aller Optionen für die Datei erhalten.

Ja, aber das bedeutet, dass zuerst die Runlevel aufgerufen wird und dann die Datei /etc/rc.d/rc/sysinit ausgeführt wird oder die Datei zuerst ausgeführt wird. Anschließend wird die Runlevel gefolgt von den entsprechenden Runlevel-Skripts aufgerufen. PeanutsMonkey vor 12 Jahren 0