Warum werden unter Linux Ordner für Konfigurationsdateien immer * .d genannt?

12

Warum werden unter Linux Ordner für Konfigurationsdateien immer benannt *.d?

Sagen

  • /etc/init.d
  • /etc/grub.d
  • /etc/apparmor.d
Qian
quelle
2
AskUbuntu hat die Antwort auf Ihre Frage.
Mehper C. Palavuzlar
So auch die Linux- und Unix-StackExchange-Site: unix.stackexchange.com/questions/4029/…
frabjous
Dieselbe Frage wurde vor ungefähr 8 Stunden bei Server Fault gestellt.
Bis auf weiteres angehalten.

Antworten:

22

Das .dsteht für Verzeichnis. Es ist eine Konvention, die verzeichnisbasierte Konfiguration von einer Konfiguration zu unterscheiden, die auf einer einzelnen Konfigurationsdatei basiert. Oft haben Sie beides in einer gewissen Kapazität, zum Beispiel /etc/logrotate.confund /etc/logrotate.d/.

In der Regel werden auch alle (vernünftigerweise benannten) Dateien in einem solchen Verzeichnis automatisch zu einer einzigen Konfiguration zusammengefasst. Pakete können dann Dateien in einem solchen Verzeichnis installieren und werden automatisch verwendet. Auch hier /etc/logrotate.d/ist ein gutes Beispiel. Ein Verzeichnis von Konfigurationsdateien, das nicht endet, .denthält wahrscheinlich nur eine zufällige Zusammenstellung von Konfigurationsdateien, die zum selben Paket gehören, und Sie können beispielsweise nichts darüber ableiten, wie sie verarbeitet werden /etc/zsh/.

Peter Eisentraut
quelle
2

Um die Antwort von Peter ein wenig zu erweitern, ermöglicht dieses .d-Muster das einfachere Hinzufügen und Entfernen von Konfigurationsdateien: Für ein bestimmtes .d-Programm kann der Administrator eine Datei einfach in das .d-Verzeichnis kopieren oder entfernen, ohne sie bearbeiten zu müssen eine vorhandene Konfigurationsdatei.

Wenn Sie beispielsweise Ihrem System einen Cron-Job hinzufügen möchten, können Sie / etc / crontab mit Ihrem neuen geplanten Job mit Ihrem bevorzugten Texteditor bearbeiten. Dies ist für einen einzelnen Server oder eine Handvoll Server in Ordnung. Versuchen Sie dies jedoch auf 100 Servern, wenn Sie in einer Rechenzentrums- / Cloud-Umgebung arbeiten. Im letzteren Fall könnten Sie so etwas wie sed mit einer temporären Datei oder einem Tool wie ex verwenden, um die Datei an Ort und Stelle zu schreiben, aber hier besteht ein gewisses Risiko, wenn Sie Ihren Befehl nicht richtig erstellt haben. In der Tat habe ich gesehen, dass Konfigurationsdateien aufgrund eines Tippfehlers in diesen Bearbeitungsbefehlen vollständig zerstört wurden.

Vergleichen Sie dies nun mit dem Platzieren einer Datei mit Ihren geplanten Jobs in /etc/cron.d. Sie kopieren einfach die Datei hinein und beim nächsten Ausführen von cron (normalerweise jede Minute) wird die neue Datei angezeigt und entsprechend beschafft / verarbeitet. Dies ist großartig, wie Peter sagt, wenn Sie Ihre eigenen Pakete rollen möchten: Die Datei /etc/cron.d ist nur eine weitere Datei im Paketarchiv, die installiert wird. Beim Entfernen des Pakets wird die Datei cron.d entfernt und Ihr Cron wird nicht mehr ausgeführt.

Schließlich kann jedes Programm, das über ein .d-Verzeichnis verfügt, eine eigene Implementierung haben, was die Art und Weise betrifft, in der die Dateien bezogen werden, z. B. das Überschreiben von Reihenfolge und Konfiguration. Wenn Sie sich entscheiden, eine Datei in einem .d-Verzeichnis abzulegen, stellen Sie immer sicher, dass sie das tut, was Sie wollen, und gehen Sie nicht einfach davon aus, dass sie wie bei einem anderen Programm mit einem .d-Verzeichnis funktioniert.

Antony Nguyen
quelle