Die Verzeichnisse rc0.d, rc1.d,… in / etc

30

Ich bin mit Ubuntu , wo ich die Verzeichnisse haben /etc/rc0.d, /etc/rc1.d, /etc/rc2.d, ..., /etc/rc6.d.

Beispieldateien von meinem Computer:

directory      example symlinks in the dir
------------------------------------------
/etc/rc1.d:    K76dovecot, K77ntp
/etc/rc2.d:    S23ntp, S24dovecot
/etc/rc3.d:    S23ntp, S24dovecot
/etc/rc4.d:    S23ntp, S24dovecot
/etc/rc5.d:    S23ntp, S24dovecot

Fragen:

  1. Was ist der Zweck der mehreren "rc" -Verzeichnisse?
  2. Warum hat Ubuntu Duplikate von dovecotund ntpin alle Verzeichnisse außer rc0.dund installiert rc6.d?
  3. Wenn sie wie oben mehrfach angegeben wurden, werden sie tatsächlich mehrfach ausgeführt?
  4. Kannst du aus dem Obigen in welcher Reihenfolge erkennen dovecotund ntpbeim Start ausführen?
  5. Was ist der richtige Weg, um Ubuntu anzuweisen, immer ntpvor dem dovecotStart ausgeführt zu werden?
roger.james
quelle

Antworten:

23
  1. Hierbei handelt runleveles sich um eine System-V-Initiierung, die von den meisten * NIX-Systemen (mit Ausnahme von systemdSystemen auf Basis von -s) verwendet wird. Beim Booten entscheidet der Kernel / User, was runleveler ausführen soll und führt nur das aus runlevel. Das bedeutet, dass Sie je runlevelnach System mit verschiedenen Programmen booten können. Es gibt auch Runlevels zum Anhalten und Neustarten, aber da Sie sich auf den Startteil konzentrieren, lassen Sie uns diese zunächst ignorieren.
  2. Da runlevelbeim Booten nur eines ausgeführt wird, sollten / möchten einige Programme bei verschiedenen runlevels mit unterschiedlichen oder gleichen Parametern in derselben oder unterschiedlicher Reihenfolge starten / stoppen (nicht alle Runlevel sind in allen Betriebssystemen gleich). Aber Ubuntu kopiert Runlevel 3-5 von 2, deshalb sind sie gleich.
  3. Nr. runlevelS werden nur einmal beim Start oder beim Wechsel ausgeführt runlevel.
  4. ntpSkripte sollten zuerst ausgeführt werden, dann dovecotin Runlevel 2-5, nicht in Runlevel 1. Die Ordnungszahl in den Skriptnamen ( ) gibt die Ausführungsreihenfolge an. Es hängt also alles von dem Runlevel ab, den Sie verwenden.S23ntp
  5. Es hängt von der Distribution ab, aber im speziellen Fall von Ubuntu können Sie Ihr Skript Runlevel 1 und 2 hinzufügen.

Weitere Informationen finden Sie im Wikipedia- Artikel über Ubuntu-Runlevel

Braiam
quelle
Wenn ich also ein Skript in alle RC.X-Verzeichnisse lege, wird es einige Male ausgeführt oder nicht?
Flash Thunder
@FlashThunder nr.
Braiam
40

Wie andere angemerkt haben, dreht sich die Antwort um Runlevel, die im Grunde die Betriebsmodi eines Betriebssystems sind. Unter Linux sind dies normalerweise:

ID  Name                               Description
0   Halt                               Shuts down the system.
1   Single-user Mode                   Mode for administrative tasks.
2   Multi-user Mode                    Does not configure network interfaces and 
                                       does not export networks services.
3   Multi-user Mode with Networking    Starts the system normally.
4   Not used/User-definable            For special purposes.
5   Start the system normally with 
    with GUI                           As runlevel 3 + display manager.
6   Reboot                             Reboots the system.

Jedes der rcNVerzeichnisse enthält also symbolische Links zu den Skripten, die auf diesem Runlevel ausgeführt werden sollen. Alle aktuellen Skripte befinden sich normalerweise im /etc/init.dVerzeichnis:

$ ls -l /etc/rc5.d/S22cron
lrwxrwxrwx 1 root root 14 Jan 14  2013 /etc/rc5.d/S22cron -> ../init.d/cron

Symbolische Linkbenennung

Eine symbolische Verknüpfung, deren Name mit einem beginnt, Swird auf dem betreffenden Runlevel gestartet, während diejenigen getötet werden, deren Name mit einem beginnt K. Beachten Sie, dass alle Links im rc6.dRunlevel für den Neustart mit beginnen K. Das liegt daran, dass sie alle für einen Neustart angehalten werden sollten und nichts gestartet werden sollte.

Die Zahlen nach dem Anfangsbuchstaben beziehen sich auf die Ausführungsreihenfolge der verknüpften Skripte. Diejenigen mit kleineren Nummern werden vor denjenigen mit höheren Nummern ausgeführt. So wird in Ihrem konkreten Beispiel S23ntp(in diesem Fall gestartet) vorher ausgeführt S24dovecot .

terdon
quelle
Gute Antwort! Was ist, wenn zwei Skripte die gleichen Nummern haben, zum Beispiel: S01bluetoothund S01rsync, wird die Reihenfolge beliebig sein?
Direprobs
@direprobs huh, gute frage. Ja, ich würde vermuten, dass einer nach dem Zufallsprinzip ausgewählt wird. Kann aber nicht sagen, dass ich es weiß.
Terdon
@ Tredon Ich denke, sie werden auf der Grundlage ihrer Dateinamen ausgewählt, da sie mit S01dem Vergleich beginnen werden b< r, bekommen Sie die Idee. Vielleicht!
Direprobs
1
Die kurze Antwort ist, /etc/init.d/rcsagt for s in /etc/rc$runlevel/S*; do …, so geht es einfach in globaler Expansionsreihenfolge; dh numerisch / alphabetisch. Die lange Antwort ist, dass der Code dort viel komplizierter ist, als ich mich erinnere. Ich werde versuchen, es in den nächsten sechs bis acht Wochen ernsthaft zu studieren. Auf den ersten Blick sieht es aus wie es die Zahl nach dem Extrahieren Sund etwas zu tun , damit, so S42beeblebroxund S42zaphodvielleicht stärker als in Verbindung gebracht werden, sagen wir, S43arthurund S44dent.
G-Man sagt, dass Monica
wirklich danke für die tolle antwort, aber ich habe eine frage. Ich habe mein Programm gestartet, aber die Geschwindigkeit der App ist niedrig: stackoverflow.com/questions/49251955/…
H.Ghassami
4

1) Die mehreren Verzeichnisse rcX.d geben an, welche Dienste während des Runlevels 'X' gestartet oder gestoppt werden sollen.

2) rc0.d ist für Runlevel 0, das heruntergefahren wird. rc6.d dient zum Neustart. Rest sind alle für verschiedene Runlevel (2 - 5). Das S steht für Start und K für Kill. Dies sind im Wesentlichen Links zu den Originalskripten in /etc/rc.d. Die Nummern nach S / K sind die Priorität, mit der die Dienste gestartet / beendet werden.

3) Ja, wenn sie mehrmals angegeben werden, wird das Start / Kill-Skript mehrmals ausgeführt. Aber niemand will das tun.

4) Wenn Sie sich die Prioritätsnummern ansehen, wird zuerst der ntp-Dienst gestartet, gefolgt von dovecot.

5) Der vierte Punkt ist der Weg.

Albert
quelle