it-swarm.com.de

Wofür steht die .d in Verzeichnisnamen?

Ich kenne viele Verzeichnisse mit .d im Namen:

init.d
yum.repos.d
conf.d

Bedeutet das Verzeichnis? Wenn ja, woraus unterscheidet sich das?

PDATE : Ich hatte viele interessante Antworten darüber, was die .d bedeutet, aber der Titel meiner Frage war nicht gut gewählt. Ich habe "mean" in "stand for" geändert.

123
greg0ire

Das .d Suffix bedeutet hier Verzeichnis. Dies wäre natürlich unnötig, da Unix kein Suffix zur Bezeichnung eines Dateityps benötigt, aber in diesem speziellen Fall war etwas erforderlich, um die Befehle zu disambiguieren (/etc/init, /etc/rc0, /etc/rc1 und so weiter) und die Verzeichnisse, die sie verwenden (/etc/init.d, /etc/rc0.d, /etc/rc1.d, ...)

Diese Konvention wurde zumindest mit Unix System V eingeführt, möglicherweise jedoch früher. Der Befehl init befand sich früher in /etc aber ist in der Regel jetzt in /sbin auf modernen System V-Betriebssystemen.

Beachten Sie, dass diese Konvention von vielen Anwendungen übernommen wurde, die von einer einzelnen Dateikonfigurationsdatei zu mehreren Konfigurationsdateien in einem einzigen Verzeichnis wechseln, z. B.: /etc/sudoers.d

Auch hier besteht das Ziel darin, Namenskonflikte nicht zwischen der ausführbaren Datei und der Konfigurationsdatei, sondern zwischen der früheren monolithischen Konfigurationsdatei und dem Verzeichnis, in dem sie enthalten sind, zu vermeiden.

108
jlliagre

Auszug aus einer Debian-Mailingliste (Hervorhebung hinzugefügt):

Als Distributionsverpackungen immer häufiger wurden, wurde klar, dass wir bessere Möglichkeiten zum Bilden solcher Konfigurationsdateien aus mehreren Fragmenten benötigen, die häufig von mehreren unabhängigen Paketen bereitgestellt werden. Jedes Paket, das einen gemeinsam genutzten Dienst konfigurieren muss, sollte nur seine Konfiguration verwalten können, ohne eine gemeinsam genutzte Konfigurationsdatei bearbeiten zu müssen, die von anderen Paketen verwendet wird.

Die am häufigsten angewandte Konvention bestand darin, die Aufnahme eines Verzeichnisses voller Konfigurationsdateien zuzulassen, in dem alles, was in dieses Verzeichnis verschoben wurde, aktiv und Teil dieser Konfiguration wird. Mit zunehmender Verbreitung dieser Konvention wurde dieses Verzeichnis normalerweise nach der Konfigurationsdatei benannt, die ersetzt oder erweitert wurde. Da man jedoch kein Verzeichnis und keine Datei mit demselben Namen haben kann, war eine Methode zur Unterscheidung erforderlich, sodass .d an das Ende des Konfigurationsdateinamens angehängt wurde. Daher wurde eine Konfigurationsdatei/etc/Muttrc durch Fragmente in /etc/Muttrc.d,/etc/bash_completion um /etc/bash_completion.d/* usw. erweitert. Manchmal werden geringfügige Abweichungen von dieser Konvention verwendet, z. B. /etc/xinetd.d als Ergänzung zu /etc/xinetd.conf oder /etc/Apache2/conf.d zur Ergänzung von /etc/Apache2/Apache2.conf. Aber es ist die gleiche Grundidee.

Wenn Sie diese * .d-Konvention sehen, bedeutet dies im Allgemeinen, dass "dies ein Verzeichnis ist, das eine Reihe von Konfigurationsfragmenten enthält, die für einen Dienst zu einer Konfiguration zusammengeführt werden."


Für Teil 2, den Grund für die ".d", wäre meine beste Vermutung "verteilt", wie in nicht Teil der Hauptkonfigurationsdatei, aber immer noch Teil der Konfiguration.

58
E-man

Wenn Sie am Ende der Verzeichnisnamen von ".d" sprechen, ist diese Antwort richtig, es ist nur eine Markierung für "Verzeichnis".

Verwechseln Sie es einfach nicht mit "d" am und eines Dateinamens wie "syslogd", was für Daemon steht. Ein Computerprozess, der im Hintergrund ausgeführt wird.

der übergeordnete Prozess eines Daemons ist häufig (aber nicht immer) der Init-Prozess (PID = 1). Prozesse werden normalerweise zu Dämonen, indem ein untergeordneter Prozess gegabelt wird und der übergeordnete Prozess sofort beendet wird, wodurch init den untergeordneten Prozess übernimmt. Dies ist eine etwas vereinfachte Ansicht des Prozesses, da im Allgemeinen andere Operationen ausgeführt werden, z. B. das Trennen des Daemon-Prozesses von einer beliebigen Steuerungsart. Zu diesem Zweck gibt es in einigen UNIX-Systemen Komfortroutinen wie Daemon (3).

12
Philomath

Dies bedeutet nicht, dass Verzeichnisse per se, sondern dass Verzeichnisse, die mit .d Endet (beachten Sie, dass diese normalerweise immer nur in /etc Sind), Konfigurationsteile übernehmen.

Dies ist so konzipiert, dass Distributionen beispielsweise in /etc/yum.conf Universelle Standardeinstellungen enthalten können. Dann gibt es jedoch eine einfach zu verwendende Methode, mit der Benutzer oder andere Pakete ihre eigenen Yum-Konfigurationen auf sichere Weise anhängen können, ohne dass sie überschrieben werden.

Als Beispiel für yum ...

Wenn ich EPEL auf meiner RHEL5- oder CentOS-Box verwenden möchte, kann ich ein neues Repository im Ordner /etc/yum.repos.d Konfigurieren (z. B. /etc/yum.repos.d/epel.repo) Oder das Epel-Release-Paket installieren, mit dem die Datei erstellt wird automatisch, ohne meine Standardkonfiguration zu ändern oder Dateikonflikte zu verursachen, die nicht auftreten müssen.

Was passieren wird, ist, dass die meisten Programme ihre Standardkonfiguration lesen (zum Beispiel /etc/yum.conf) Und dann über ihre .d - Ordner iterieren, einschließlich Konfigurationsausschnitten in das laufende Programm.

Hoffe es erklärt es für dich.

4
N J

So wie Dateien .ext Haben können, um anzugeben, um welchen Dateityp es sich handelt (allgemein als "Erweiterung" bezeichnet), haben Verzeichnisse manchmal .d, Um anzuzeigen, dass es sich um ein Verzeichnis und nicht um eine Datei handelt. Das ist sein Typ. Die Standardausgabe ls unterscheidet Verzeichnisse und Dateien nicht visuell, daher ist .d Nur eine alte Konvention, um ihren Typ (Verzeichnis) in solchen Auflistungen anzuzeigen.

3
Keith

Im Allgemeinen geben die .d-Verzeichnisse (/etc/httpd/conf.d, /etc/rc.d,/etc/als weiteres Beispiel) an, dass die enthaltenen Dateien gelesen und häufig für die Konfiguration verwendet werden, wenn sie übereinstimmen ein bestimmtes Muster und müssen nicht explizit zu einer Hauptliste hinzugefügt werden.

Wenn Sie also Dateien der Form * .repo zu /etc/yum.repos.d hinzufügen, wird sie von yum beim Ausführen verwendet, ohne dass sie einer Liste von Konfigurationen /etc/yum.conf hinzugefügt werden müssen. Wenn Sie Dateien der Form * .conf zu /etc/http/conf.d hinzufügen, werden diese von Apache gelesen, ohne dass sie explizit zu /etc/httpd/conf/httpd.conf hinzugefügt werden müssen. Ebenso chkconfig zu Dateien in /etc/init.d, Cron-Jobs in /etc/cron.d.

2
Tim

Ich denke, kann aber nicht dokumentieren, dass die .d gibt an, dass das Verzeichnis mit a verknüpft ist daemon.

Es gibt Hinweise darauf, dass dies zumindest plausibel ist:

Sudo find / -maxdepth 3 -name "*.d"

Irgendwo in den tiefen Nischen der kleinen Teile der alten Unix-Geschichte, die immer noch im Hinterkopf hinter den Spinnweben herumrasseln, ruft mich dies als die richtige Antwort an. Ich glaube, es könnte aus einer Zeit stammen, als die ersten Säugetiere die Erde durchstreiften, bevor die Dinosaurier auszusterben begannen und man Seiten nicht nur im System aufbewahrt wurden, sondern auch physisch in Gestellen, die am Fuß gemessen wurden.