Was bedeutet das Suffix .d in Linux?

33

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

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

SCL
quelle
1
es bedeutet, dass es sich um einen Dämon handelt
dynamisch
8
@ yes123: Diese Theorie mit nicht gut passen /etc/apt/sources.list.d/, /etc/profile.detc
Martin
Aus den Antworten von Haakon und Deltaray, frage ich mich, ob .dfür steht default. Den Informationen hier zufolge ist dies nicht der Fall, aber es scheint logisch. Vielleicht kann ich es mir so vorstellen?
Smandoli

Antworten:

44

"d" steht für Verzeichnis und ein solches Verzeichnis ist eine Sammlung von Konfigurationsdateien, die häufig Fragmente sind, die in der Hauptkonfigurationsdatei enthalten sind. Es geht darum, Konfigurationsprobleme zu unterteilen, um die Wartbarkeit zu verbessern.

Wenn Sie eine Unterscheidung wie /etc/httpd/confvs treffen /etc/httpd/conf.d, sind in der Regel /etc/httpd/confverschiedene Arten von Konfigurationsdateien enthalten, während ein .dVerzeichnis mehrere Instanzen desselben Konfigurationsdateityps enthält (z. B. "zu ladende Module", "zu aktivierende Sites" usw.) ), und der Administrator kann nach Bedarf hinzufügen und entfernen.

Haakon
quelle
4
conf ist aber auch ein Verzeichnis. Wenn also 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
7
Die .d-Verzeichnisse werden normalerweise auch automatisch geladen. Zum Beispiel prüft cron cron.d und parst alle darin enthaltenen Dateien. Die Haupt-Apache-Konfiguration hat etwas wie "include conf.d / *", das alle Dateien in conf.d beim Neuladen enthält. Es ist auch sehr praktisch für die Paketverwaltung von Modulen. Der Paketmanager muss nicht versuchen, Dateien zu bearbeiten, sondern legt lediglich die Konfiguration für das Modul im richtigen .d-Verzeichnis ab und lädt dann den Dienst neu.
Niall Donegan
13

Die wichtigste Triebfeder für die Existenz dieser Verzeichnisnamenkonvention ist die einfachere Paketverwaltung von Konfigurationsdateien. Unabhängig davon, ob es sich um rpm, deb oder was auch immer handelt, ist es viel einfacher (und wahrscheinlich sicherer), eine Datei in einem Verzeichnis abzulegen, sodass sie automatisch in die Programmkonfiguration einbezogen wird, anstatt zu versuchen, eine globale Konfigurationsdatei zu bearbeiten.

Ein gutes Beispiel dafür ist Logrotate. Im Verzeichnis /etc/logrotate.d befinden sich Konfigurationsdateien für praktisch jede von Ihnen installierte Anwendung, die ein Protokoll in / var / log führt . Einige sind in der Syslog-Konfiguration zusammengefasst, da fast jedes System über eine Nachrichten-, eine wtmp- und eine lastlog-Datei verfügt. Wenn Sie Apache jedoch auf Ihrem System installieren, müssen Sie die Konfiguration zum Rotieren der Apache-Protokolle auf einfache Weise automatisch hinzufügen, sodass nur eine Konfigurationsdatei mit dem Namen httpd in /etc/logrotate.d abgelegt wirdund logrotate ist so konfiguriert, dass die Dateien in diesem Verzeichnis enthalten sind. Jedes gehört dem Paket für den Dämon, 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, dass das System für Sie oder so etwas tut. Normalerweise enthalten Programme, die eine Konfigurationsanweisung namens haben , die angibt, wo sich dieses Verzeichnis im Dateisystem befindet.

logrotate.d könnte sogar der erste Ort sein, an dem diese Konvention außerhalb der Verzeichnisse init.d und rc.d für Init-Skripte verwendet wurde.

DeltaRay
quelle