Was ist der Unterschied zwischen /etc/init/
und /etc/init.d/
?
Allgemeiner, welche Bedeutung hat das? .d
Suffix zu einem Verzeichnis übermitteln?
Was ist der Unterschied zwischen /etc/init/
und /etc/init.d/
?
Allgemeiner, welche Bedeutung hat das? .d
Suffix zu einem Verzeichnis übermitteln?
/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 die init
Programm (der erste Prozess, der ausgeführt wird, wenn der Kernel die Initialisierung abgeschlossen hat¹) sowie eine Infrastruktur zum Starten und Stoppen von Diensten und zum Konfigurieren dieser Dienste. Insbesondere Dateien in /etc/init.d
sind Shell-Skripte, die darauf reagieren start
, stop
, restart
und (wenn unterstützt) reload
Befehle zum Verwalten eines bestimmten Dienstes. Diese Skripte können direkt oder (am häufigsten) über einen anderen Trigger aufgerufen werden (normalerweise das Vorhandensein eines symbolischen Links in /etc/rc?.d/
).
/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, die Upstart mitteilen, wie und wann start
, stop
, reload
die Konfiguration oder Abfrage der status
eines Dienstes. Klar ist, dass Ubuntu von SysVinit zu Upstart wechselt, was erklärt, warum viele Dienste mit SysVinit-Skripten kommen, obwohl Upstart-Konfigurationsdateien bevorzugt werden. Tatsächlich werden die SysVinit-Skripte von einer Kompatibilitätsschicht in Upstart verarbeitet.
.d
in Verzeichnisnamen bezeichnet typischerweise ein Verzeichnis, das viele Konfigurationsdateien oder Skripte für eine bestimmte Situation enthält (z. /etc/apt/sources.list.d
enthält Dateien, die verkettet sind, um eine virtuelle Datei zu erstellen sources.list
; /etc/network/if-up.d
enthält Skripte, die bei einem Netzwerk ausgeführt werden ichnachfAss ist aktiviert). Diese Struktur wird normalerweise verwendet, wenn jeder Eintrag in dem Verzeichnis von einer anderen Quelle bereitgestellt wird, so dass jedes Paket sein eigenes Plug-in ablegen kann, ohne eine einzelne Konfigurationsdatei analysieren zu müssen, um sich selbst zu referenzieren. In diesem Fall ist es einfach so, dass "init" ein logischer Name für das Verzeichnis ist, SysVinit kam zuerst und wurde benutzt init.d
, und Emporkömmling benutzt Ebene init
für ein Verzeichnis mit einem ähnlichen Zweck (es wäre mehr "Mainstream" gewesen, und vielleicht weniger arrogant, wenn sie es benutzt hätten /etc/upstart.d
stattdessen).
¹ Initrd nicht mitzählen
Das ".d" wird normalerweise an einen Verzeichnisnamen angehängt, um anzuzeigen, dass das, was einmal von einem einzelnen Skript oder einer einzelnen Konfigurationsdatei gehandhabt wurde (oder was hätte sein können), aus Gründen der Zweckmäßigkeit in mehrere Dateien aufgeteilt wurde sollte zusammen enthalten oder ausgeführt werden.
Beispielsweise, /etc/apache/conf.d/
oder /etc/apt/sources.d/
In Fällen, in denen es wichtig ist, in welcher Reihenfolge sie aufgenommen / ausgeführt werden sollen, beginnen die Dateien in diesen Verzeichnissen manchmal mit einer Nummer wie "00-default" oder "80-user", so dass sie in der richtigen Reihenfolge ausgeführt werden.
Im Falle des /etc/init.d/
Es zeigt an, dass alle Skripte in "init.d" ausgeführt werden sollten. Heutzutage ist das Init-System moderner Betriebssysteme jedoch etwas komplizierter, aber der Verzeichnisname ist immer noch da.
Wie Sie bemerken, ist die Nomenklatur ".d" rätselhaft und seltsam und hat in keinem modernen System wirklich Platz - Sie werden feststellen, dass die meisten modernen Dienste dazu neigen, sie fallen zu lassen.
Der Grund für das Verzeichnis ist /etc/init
und nicht /etc/upstart
Weil Upstart der Projektname ist, ist die tatsächlich installierte Binärdatei immer noch vorhanden /sbin/init
daher wäre es für die Konfiguration nicht sinnvoll, einen Namen zu haben, der nicht mit der Binärdatei übereinstimmt.