В linux почему папки для файлов конфигурации всегда называются * .d

12

В Linux, почему папки с файлами конфигурации всегда имеют имена *.d?

Сказать

  • /etc/init.d
  • /etc/grub.d
  • /etc/apparmor.d
Цянь
источник
2
AskUbuntu имеет ответ на ваш вопрос.
Мехпер С. Палавузлар
Так же как и на сайте Linux и Unix StackExchange: unix.stackexchange.com/questions/4029/…
frabjous
Этот же вопрос был задан при сбое сервера около 8 часов назад.
Приостановлено до дальнейшего уведомления.

Ответы:

22

.dОбозначает каталог. Это соглашение, чтобы отличать конфигурацию на основе каталога от конфигурации, основанной на одном файле конфигурации. Часто вы будете иметь в некотором качестве, например, /etc/logrotate.confи /etc/logrotate.d/.

Также обычно бывает, что все (с разумным именем) файлы в таком каталоге автоматически объединяются в одну конфигурацию. Затем пакеты могут устанавливать файлы в такой каталог, и они будут использоваться автоматически. Опять же, /etc/logrotate.d/хороший пример. С другой стороны, каталог файлов конфигурации, который не заканчивается, .dвероятно, просто содержит случайное сопоставление файлов конфигурации, принадлежащих одному и тому же пакету, и вы ничего не можете сделать вывод о том, как они обрабатываются, например /etc/zsh/.

Питер Айзентраут
источник
2

Чтобы немного расширить ответ Питера, этот шаблон .d позволяет упростить добавление и удаление файлов конфигурации: для данной программы .d администратор может просто скопировать или удалить файл в каталог .d без необходимости редактирования. существующий файл конфигурации.

Например, если вы хотите добавить в систему задание cron, вы можете отредактировать / etc / crontab с помощью нового запланированного задания, используя ваш любимый текстовый редактор. Это хорошо для одного сервера или нескольких серверов, но попробуйте сделать это на 100 серверах, если вы работаете в центре обработки данных / облачной среде. В последнем случае вы можете использовать что-то вроде sed с временным файлом или инструмент, такой как ex, чтобы записать файл на месте, но здесь есть небольшой риск, если вы не создали свою команду должным образом. Действительно, я видел файлы конфигурации полностью обстрелянными из-за опечатки в этих командах редактирования.

Теперь сравните это с размещением файла с запланированными заданиями в /etc/cron.d. Вы просто копируете файл в него, и в следующий раз, когда cron запускается (обычно каждую минуту), он увидит новый файл и соответствующим образом его обработает / обработает. Это замечательно, как утверждает Питер, если вы хотите свернуть свои собственные пакеты: файл /etc/cron.d - это просто еще один файл в архиве пакетов, который устанавливается. После удаления пакета файл cron.d удаляется, и ваш cron больше не работает.

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

Энтони Нгуен
источник