Was ist der Unterschied zwischen /etc/init/
und /etc/init.d/
?
Welche allgemeine Bedeutung hat das .d
Suffix für ein Verzeichnis?
quelle
Was ist der Unterschied zwischen /etc/init/
und /etc/init.d/
?
Welche allgemeine Bedeutung hat das .d
Suffix für ein Verzeichnis?
/etc/init.d
Enthält Skripte, die von den System V-Init-Tools (SysVinit) verwendet werden. Dies ist das traditionelle Service-Management-Paket für Linux, das das init
Programm (den ersten Prozess, der ausgeführt wird, wenn der Kernel die Initialisierung abgeschlossen hat¹) sowie eine Infrastruktur zum Starten und Stoppen von Diensten und zu deren Konfiguration enthält. Insbesondere Dateien in /etc/init.d
sind Shell - Skripte , die reagieren auf start
, stop
, restart
und (wenn unterstützt) reload
einen bestimmten Dienst zu verwalten Befehle. Diese Skripte können direkt oder (meistens) über einen anderen Trigger (normalerweise das Vorhandensein eines symbolischen Links in /etc/rc?.d/
) aufgerufen werden .
/etc/init
Enthält Konfigurationsdateien, die von Upstart verwendet werden. Upstart ist ein junges Service-Management-Paket, das von Ubuntu unterstützt wird. Dateien in /etc/init
sind Konfigurationsdateien zu sagen Upstart , wann und wie start
, stop
, reload
die Konfiguration oder die Abfrage status
eines Dienstes. Ab lucid wechselt Ubuntu von SysVinit zu Upstart, was erklärt, warum viele Dienste SysVinit-Skripte enthalten, obwohl Upstart-Konfigurationsdateien bevorzugt werden. Tatsächlich werden die SysVinit-Skripte von einer Kompatibilitätsebene in Upstart verarbeitet.
.d
viele Konfigurationsdateien oder Skripte für eine bestimmte Situation in Verzeichnisnamen gibt in der Regel ein Verzeichnis enthält (zB /etc/apt/sources.list.d
enthält Dateien , die verkettet ein virtuelles zu machen sources.list
, /etc/network/if-up.d
enthält Skripte , die ausgeführt werden , wenn ein Netzwerk - i nter f ace aktiviert ist ). Diese Struktur wird normalerweise verwendet, wenn jeder Eintrag im Verzeichnis von einer anderen Quelle bereitgestellt wird, sodass jedes Paket sein eigenes Plug-In ablegen kann, ohne eine einzelne Konfigurationsdatei analysieren zu müssen, um auf sich selbst zu verweisen. In diesem Fall ist "init" einfach ein logischer Name für das Verzeichnis, SysVinit stand an erster Stelle und wurde verwendet init.d
, und Upstart wurde einfach verwendetinit
für ein Verzeichnis mit einem ähnlichen Zweck (es wäre mehr "Mainstream" und vielleicht weniger arrogant gewesen, wenn sie /etc/upstart.d
stattdessen verwendet hätten).
¹ zählt nicht initrd
.d
Verzeichnisse, die mit System V eingegeben wurden. Es war damals eine rätselhafte Notation und letztendlich wahrscheinlich die Idee einer Person, die in die Codebasis kam und nicht gehen konnte. Wenn Sie beispielsweise der Meinung sind, dass diescat
ein schlechter Name für die durchgeführte Aufgabe ist, stellen Sie sich vor, wie viele Dateien im gesamten System Sie berühren müssen, um sie zu ändern.upstart
oder vorhanden istsysvinit
. Und in neueren Versionen könnte essystemd
auch so sein (was es für Ubuntu damals nicht gab, als ich meine Antwort schrieb). Es ist das Paket, das/sbin/init
(dpkg -S /sbin/init
) bereitstellt .upstart
Paket, das / sbin / init (randpkg -S /sbin/init
) bereitstellt . Aber Bitnami hat sein Skript in das Verzeichnis /etc/init.d gestellt. Ist das nicht ein Konflikt mit Ihrer Antwort auf @AsheeshR oben? Danke.Das ".d" wird normalerweise an einen Verzeichnisnamen angehängt, um anzuzeigen, dass das, was früher von einem einzelnen Skript oder einer einzelnen Konfigurationsdatei behandelt wurde (oder hätte behandelt werden können), der Einfachheit halber in mehrere Dateien aufgeteilt wurde, aber welche sollten zusammen aufgenommen oder ausgeführt werden.
Zum Beispiel
/etc/apache/conf.d/
oder/etc/apt/sources.d/
In Fällen, in denen es wichtig ist, in welcher Reihenfolge sie ausgeführt werden sollen, beginnen die Dateien in diesen Verzeichnissen manchmal mit einer Nummer wie "00-default" oder "80-user", damit sie in der richtigen Reihenfolge ausgeführt werden.
In diesem Fall bedeutet
/etc/init.d/
dies, dass alle Skripte in "init.d" ausgeführt werden sollen. Heutzutage ist das Init-System moderner Betriebssysteme jedoch etwas komplizierter, aber der Verzeichnisname ist immer noch vorhanden.quelle
.d
dass es sich um einen 'Deamon'-Prozess handelt, der normalerweise beim Booten gestartet wird.Wie Sie betonen, ist die ".d" -Nomenklatur rätselhaft und seltsam und hat in keinem modernen System wirklich Platz - Sie werden feststellen, dass die meisten modernen Dienste dazu tendierten, sie fallen zu lassen.
Der Grund, warum das Verzeichnis ist
/etc/init
und nicht,/etc/upstart
ist, dass Upstart der Projektname ist, die tatsächlich installierte Binärdatei also immer noch/sbin/init
nicht sinnvoll ist , wenn ihre Konfiguration einen Namen hat, der nicht mit der Binärdatei übereinstimmt.quelle
rules.d
, Xorgs relativ neuxorg.conf.d
, nicht zu alt/etc/profile.d
usw.