Co oznacza przyrostek .d w systemie Linux?

33

Konfiguruję apache i domyślnie mam katalogi /etc/httpd/confi /etc/httpd/conf.d. Jaka jest różnica?

Ponadto można zobaczyć sufiks w wielu innych katalogów, takich jak /etc/init.d, /etc/cron.ditd ...

SCL
źródło
1
oznacza to, że odnosi się do demona
dynamiczny
8
@ yes123: To teoria nie pasuje dobrze /etc/apt/sources.list.d/, /etc/profile.detc
Martin
Z odpowiedzi udzielonych przez Haakona i Deltaraya zastanawiam się, czy to .doznacza default. Nie ma, zgodnie z informacjami tutaj, ale wydaje się logiczne. Może uda mi się myśleć o tym w ten sposób?
Smandoli,

Odpowiedzi:

44

„d” oznacza katalog, a taki katalog to zbiór plików konfiguracyjnych, które często są fragmentami zawartymi w głównym pliku konfiguracyjnym. Chodzi o to, aby rozdzielić przedziały dotyczące konfiguracji w celu zwiększenia łatwości konserwacji.

Jeśli masz takie rozróżnienie, jak /etc/httpd/confvs /etc/httpd/conf.d, zwykle /etc/httpd/confzawiera różne rodzaje plików konfiguracyjnych, podczas gdy .dkatalog zawiera wiele instancji tego samego typu pliku konfiguracyjnego (takich jak „moduły do ​​załadowania”, „witryny do włączenia” itp. ), a administrator może dodawać i usuwać w razie potrzeby.

Haakon
źródło
4
ale conf jest także katalogiem, więc jeśli oba są katalogami, jaka jest różnica? Masz rację co do ServerFault, czy można go przenieść?
SCL,
Dodano trochę o tym rozróżnieniu, mam nadzieję, że nie jest to całkowicie mylące :-)
Haakon
7
Katalogi .d są również zwykle ładowane automatycznie. Na przykład, cron sprawdzi cron.d i parsuje wszystkie zawarte w nim pliki, główna konfiguracja apache będzie miała coś w rodzaju „include conf.d / *”, który będzie zawierał dowolne pliki w conf.d podczas przeładowania. Jest to również bardzo przydatne do zarządzania pakietami modułów. Menedżer pakietów nie musi próbować edytować plików, po prostu upuszcza konfigurację modułu do właściwego katalogu .d, a następnie ponownie ładuje usługę.
Niall Donegan
13

Główną siłą napędową tej konwencji nazewnictwa katalogów jest łatwiejsze zarządzanie pakietami plików konfiguracyjnych. Niezależnie od tego, czy jest to rpm, deb czy cokolwiek innego, znacznie łatwiej (i prawdopodobnie bezpieczniej) jest możliwość upuszczenia pliku do katalogu, dzięki czemu jest on automatycznie dołączany do konfiguracji programu, zamiast próbować edytować globalny plik konfiguracyjny.

Dobrym przykładem tego jest logrotate. W katalogu /etc/logrotate.d znajdują się pliki konfiguracyjne dla praktycznie każdej zainstalowanej aplikacji, która prowadzi dziennik / var / log . Niektóre są powiązane w konfigurację syslog, ponieważ prawie każdy system ma komunikaty, wtmp i plik lastlog. Ale jeśli zainstalujesz Apache w swoim systemie, potrzebujesz łatwego sposobu automatycznego dodania konfiguracji do obracania dzienników Apache, więc po prostu upuszcza plik konfiguracyjny o nazwie httpd w /etc/logrotate.di logrotate jest skonfigurowany tak, aby zawierał pliki w tym katalogu. Każdy jest własnością pakietu dla demona i jeśli usuniesz pakiet, plik zostanie usunięty. Jest to w zasadzie sposób modularyzacji plików konfiguracyjnych. Pamiętaj, że musi to być obsługiwane przez program, to nie jest coś automatycznego, co system robi dla ciebie lub coś takiego. Zwykle programy, które to robią, mają dyrektywę config o nazwie include, która określa lokalizację tego katalogu w systemie plików.

logrotate.d może być nawet pierwszym miejscem, w którym ta konwencja została zastosowana poza katalogami init.d i rc.d dla skryptów init.

deltaray
źródło