Что означает суффикс .d в Linux?


33

Я настраиваю apache и по умолчанию у меня есть каталоги /etc/httpd/confи /etc/httpd/conf.d. В чем разница?

Также вы можете увидеть суффикс во многих других каталогах, как /etc/init.d, /etc/cron.dи т.д ...


1
это означает, что это относится к демону
динамическому


8
@ yes123: Эта теория не очень хорошо сочетается с /etc/apt/sources.list.d/, и /etc/profile.dт.д.
Martin

Из ответов на Хокон и deltaray, мне интересно , если .dстоит на default. Это не так, согласно информации здесь, но это кажется логичным. Может быть, я могу пойти дальше и думать об этом таким образом?
Smandoli

Ответы:


44

«d» обозначает каталог, и такой каталог представляет собой набор файлов конфигурации, которые часто являются фрагментами, которые включены в основной файл конфигурации. Дело в том, чтобы разделить проблемы конфигурации для повышения удобства обслуживания.

Когда у вас есть различие, такое как /etc/httpd/confvs /etc/httpd/conf.d, обычно это тот случай, когда в нем /etc/httpd/confсодержатся различные типы файлов конфигурации, в то время как .dкаталог содержит несколько экземпляров одного и того же типа файла конфигурации (например, «модули для загрузки», «сайты для включения» и т. Д.). ), а администратор может добавлять и удалять по мере необходимости.


4
но conf также является каталогом, так что, если оба являются каталогами, в чем разница? Вы правы насчет ServerFault, возможно ли его перенести?
SCL

Добавил немного о различии, надеюсь, это не совсем сбивает с толку :-)
Haakon

7
Каталоги .d также обычно загружаются автоматически. Например, cron проверит cron.d и проанализирует все файлы в нем, в основной конфигурации apache будет что-то вроде «include conf.d / *», которая будет включать любые файлы в conf.d при перезагрузке. Это также очень удобно для управления пакетами модулей. Менеджер пакетов не должен пытаться редактировать файлы, он просто сбрасывает конфигурацию для модуля в правильный каталог .d, а затем перезагружает службу.
Найл Донеган

13

Основной движущей силой существования этого соглашения об именах каталогов является упрощение управления пакетами файлов конфигурации. Будь то rpm, deb или что-то еще, гораздо проще (и, вероятно, безопаснее) иметь возможность поместить файл в каталог, чтобы он автоматически включался в конфигурацию программы, а не пытался редактировать глобальный файл конфигурации.

Хорошим примером этого является logrotate. В каталоге /etc/logrotate.d находятся файлы конфигурации практически для каждого установленного вами приложения, которое ведет журнал в / var / log . Некоторые из них включены в конфигурацию системного журнала, потому что почти в каждой системе есть файлы сообщений, wtmp и lastlog. Но если вы устанавливаете Apache в своей системе, вам нужен простой способ автоматического добавления конфигурации для ротации журналов Apache, поэтому он просто удаляет файл конфигурации с именем httpd в /etc/logrotate.dи logrotate настроен на включение файлов в этот каталог. Каждый из них принадлежит пакету для демона, и если вы удалите пакет, он удалит файл. Это в основном способ модуляции конфигурационных файлов. Обратите внимание, что это должно поддерживаться программой, а не что-то автоматическое, что система делает для вас или что-то еще. Обычно программы, которые делают это, имеют директиву config, называемую include, которая указывает, где находится этот каталог в файловой системе.

logrotate.d может даже быть первым местом, где это соглашение использовалось вне каталогов init.d и rc.d для сценариев инициализации.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.