Frage Was bedeutet das Suffix .d in Linux?


Ich konfiguriere Apache und standardmäßig habe ich die Verzeichnisse /etc/httpd/conf und /etc/httpd/conf.d. Was ist der Unterschied?

Sie können das Suffix auch in vielen anderen Verzeichnissen sehen /etc/init.d, /etc/cron.d, usw...


30
2018-02-25 08:50


Ursprung


es bedeutet, dass es sich auf einen Daemon bezieht - dynamic
betrügen: askubuntu.com/questions/7648/ ... - Sirex
@ yes123: Diese Theorie passt nicht gut mit /etc/apt/sources.list.d/, /etc/profile.d usw - Martin
Aus den Antworten von Haakon und deltaray frage ich mich, ob .d steht für default. Es ist nicht, nach den Informationen hier, aber es scheint logisch. Vielleicht kann ich weitermachen und so denken? - Smandoli


Antworten:


"d" steht für Verzeichnis und ein solches Verzeichnis ist eine Sammlung von Konfigurationsdateien, die oft Fragmente sind, die in der Hauptkonfigurationsdatei enthalten sind. Der Punkt besteht darin, Konfigurationsprobleme zu unterteilen, um die Wartbarkeit zu erhöhen.

Wenn Sie eine Unterscheidung wie z /etc/httpd/conf vs /etc/httpd/conf.dNormalerweise ist es so /etc/httpd/conf enthält verschiedene Arten von Konfigurationsdateien, während a .d Das Verzeichnis enthält mehrere Instanzen desselben Konfigurationsdateityps (z. B. "zu ladende Module", "zu aktivierende Sites" usw.), und der Administrator kann nach Bedarf hinzufügen und entfernen.


41
2018-02-25 08:55



aber conf ist auch ein Verzeichnis, also, wenn beide Verzeichnisse sind, was ist der Unterschied? Sie haben Recht mit ServerFault, ist es möglich, es zu verschieben? - SCL
Ein wenig über die Unterscheidung hinzugefügt, hoffe, es ist nicht ganz verwirrend :-) - Haakon
Die .d-Verzeichnisse werden normalerweise automatisch geladen. Zum Beispiel wird cron cron.d prüfen und alle darin enthaltenen Dateien parsen, die main apache config wird etwas wie "include conf.d / *" haben, das alle Dateien in conf.d beim erneuten Laden enthält. Es ist auch sehr praktisch für die Paketverwaltung von Modulen. Der Paketmanager muss nicht versuchen, Dateien zu bearbeiten. Er lässt die Konfiguration für das Modul einfach in das richtige Verzeichnis .d fallen und lädt den Dienst neu. - Niall Donegan


Die Hauptantriebskraft für die Existenz dieser Verzeichnisbenennungskonvention ist die einfachere Paketverwaltung von Konfigurationsdateien. Ob es rpm, deb oder was auch immer ist, es ist viel einfacher (und wahrscheinlich sicherer), eine Datei in ein Verzeichnis zu legen, so dass es automatisch in die Konfiguration eines Programms aufgenommen wird, anstatt zu versuchen, eine globale Konfigurationsdatei zu bearbeiten.

Ein gutes Beispiel dafür ist Logrotat. Im Verzeichnis /etc/logrotate.d sind Konfigurationsdateien für praktisch jede Anwendung, die Sie installiert haben, die eine Anmeldung beibehält / var / log. Einige sind in der Syslog-Konfiguration gebunkelt, weil fast jedes System eine Nachricht, eine wtmp- und eine lastlog-Datei hat. Aber wenn Sie Apache auf Ihrem System installieren, benötigen Sie eine einfache Möglichkeit, die Konfiguration automatisch hinzuzufügen, um die Apache-Protokolle zu rotieren, so dass nur eine Konfigurationsdatei namens httpd in abgelegt wird /etc/logrotate.d und logrotate ist so konfiguriert, dass die Dateien in diesem Verzeichnis enthalten sind. Jeder ist im Besitz des Pakets für den Daemon und wenn Sie das Paket entfernen, wird die Datei entfernt. Es ist im Grunde eine Möglichkeit, Konfigurationsdateien zu modularisieren. Beachten Sie, dass dies vom Programm unterstützt werden muss, es ist nicht automatisch etwas, das das System für Sie oder etwas tut. Normalerweise haben Programme, die es tun, eine Config-Anweisung namens umfassen Das gibt an, wo sich das Verzeichnis im Dateisystem befindet.

logrotate.d Vielleicht war es sogar der erste Ort, an dem diese Konvention außerhalb der USA stattfand init.d und rc.d Verzeichnisse für Init-Skripte.


13
2018-02-25 20:12