
Ich verwende Ubuntu, wo ich die Verzeichnisse /etc/rc0.d
, /etc/rc1.d
, /etc/rc2.d
, ..., habe /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:
- Was ist der Zweck der mehreren „rc“-Verzeichnisse?
- Warum hat Ubuntu Duplikate von
dovecot
undntp
in alle Verzeichnisse außerrc0.d
und installiertrc6.d
? - Wenn sie wie oben mehrfach angegeben werden, werden sie dann tatsächlich mehrfach ausgeführt?
- Können Sie aus dem Obigen erkennen, in welcher Reihenfolge
dovecot
dientp
Ausführung beim Start erfolgt? - Wie kann man Ubuntu richtig anweisen,
ntp
vordovecot
dem Start immer eine Ausführung durchzuführen?
Antwort1
Wie andere bereits bemerkt haben, dreht sich die Antwort umRunlevelDies sind im Wesentlichen die Betriebsmodi eines Betriebssystems. 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 rcN
Verzeichnisse enthält symbolische Links zu den Skripten, die auf diesem Runlevel ausgeführt werden sollen. Alle eigentlichen Skripte befinden sich normalerweise im /etc/init.d
Verzeichnis:
$ ls -l /etc/rc5.d/S22cron
lrwxrwxrwx 1 root root 14 Jan 14 2013 /etc/rc5.d/S22cron -> ../init.d/cron
Symbolische Linkbenennung
Ein symbolischer Link, dessen Name mit einem beginnt, S
wird auf dem entsprechenden Runlevel gestartet, während diejenigen, deren Name mit beginnt, K
beendet werden. Beachten Sie, dass alle Links in rc6.d
, dem Neustart-Runlevel, mit beginnen K
. Das liegt daran, dass sie alle für einen Neustart gestoppt werden sollten und nichts gestartet werden sollte.
Die Zahlen nach dem Anfangsbuchstaben beziehen sich auf die Ausführungsreihenfolge der verknüpften Skripte. Die Skripte mit den kleineren Zahlen werden vor denen mit den höheren Zahlen ausgeführt. In Ihrem konkreten Beispiel S23ntp
wird also ausgeführt (in diesem Fall gestartet)Vor S24dovecot
.
Antwort2
- Dies sind
runlevel
s und sind eine System V-artige Initiierung, die von den meisten *NIX-Systemen verwendet wird (mit der bemerkenswerten Ausnahme vonsystemd
-basierten Systemen). Beim Booten entscheidet der Kernel/Benutzer, wasrunlevel
ausgeführt werden soll, und führt nur das ausrunlevel
. Das bedeutet, dassrunlevel
Sie je nach mit einem anderen Satz von Programmen booten können. Es gibt auch Runlevels für Anhalten und Neustarten, aber da Sie sich auf den Startteil konzentrieren, ignorieren wir diese vorerst. - Da
runlevel
beim Booten nur einer ausgeführt wird, sollten/möchten einige Programme an verschiedenenrunlevel
Stellen mit unterschiedlichen oder gleichen Parametern in derselben oder einer anderen Reihenfolge gestartet/gestoppt werden (nicht alle Runlevel sind in allen Betriebssystemen gleich). Aber Ubuntu kopiert die Runlevel 3-5 von 2, deshalb sind sie gleich. - Nr.
runlevel
s werden nur einmal beim Start oder beim Ändern ausgeführtrunlevel
. ntp
Skripte sollten zuerstdovecot
in den Runleveln 2-5 ausgeführt werden, was bei Runlevel 1 nicht der Fall ist. Die Ordnungszahl in den Skriptnamen ( ) gibt die Reihenfolge der Ausführung an. Es hängt also alles von dem von Ihnen verwendeten Runlevel ab.S23ntp
- Es hängt von der Distribution ab, aber im speziellen Fall von Ubuntu können Sie Ihr Skript zu Runlevel 1 und 2 hinzufügen.
Mehr Infos imWikipediaArtikel über Ubuntu-Runlevel
Antwort3
1) Die mehreren rcX.d-Verzeichnisse geben an, welche Dienste während des Runlevels „X“ gestartet oder gestoppt werden sollen.
2) rc0.d ist für Runlevel 0, also Herunterfahren. rc6.d ist für Neustart. Der Rest ist für verschiedene Runlevel (2 - 5). Das S steht für Start und das K für Kill. Dies sind im Wesentlichen Links zu den Originalskripten in /etc/rc.d. Die Zahlen nach S/K geben die Priorität an, mit der die Dienste gestartet/beendet werden.
3) Ja, wenn sie mehrfach angegeben werden, wird das Start-/Kill-Skript mehrfach ausgeführt. Aber das möchte niemand.
4) Unter Berücksichtigung der Prioritätszahlen wird zuerst der NTP-Dienst und dann Dovecot gestartet.
5) Der 4. Punkt ist der Weg.