В чем разница между / etc / init / и /etc/init.d/?

206

В чем разница между /etc/init/ и /etc/init.d/ ?

В более общем смысле, какой смысл суффикс .d переносит в каталог?

    
задан Olivier Lalonde 02.10.2010 в 00:59
источник

3 ответа

205

/etc/init.d содержит скрипты, используемые инструментами инициализации System V (SysVinit). Это традиционный пакет управления услугами для Linux, содержащий программу init (первый процесс, который запускается после завершения инициализации ядра¹), а также некоторую инфраструктуру для запуска и остановки служб и их настройки. В частности, файлы в /etc/init.d являются сценариями оболочки, которые отвечают на start , stop , restart и (при поддержке) reload команд для управления определенным сервисом. Эти сценарии могут быть вызваны напрямую или (чаще всего) с помощью какого-либо другого триггера (как правило, наличие символической ссылки в /etc/rc?.d/ ).

/etc/init содержит файлы конфигурации, используемые Upstart. Upstart - это молодой пакет управления услугами, защищенный Ubuntu. Файлы в /etc/init - это файлы конфигурации, сообщающие Upstart, как и когда start , stop , reload конфигурации или запрашивают status службы. Что касается lucid, Ubuntu переходит от SysVinit к Upstart, что объясняет, почему многие службы поставляются со сценариями SysVinit, хотя предпочтительны файлы конфигурации Upstart. На самом деле скрипты SysVinit обрабатываются уровнем совместимости в Upstart.

.d в именах каталогов обычно указывает каталог, содержащий множество файлов конфигурации или скриптов для конкретной ситуации (например, /etc/apt/sources.list.d содержит файлы, которые объединены для создания виртуального sources.list ; /etc/network/if-up.d содержит скрипты, которые выполняются, когда активируется сеть i nter f . Эта структура обычно используется, когда каждая запись в каталоге предоставляется другим источником, так что каждый пакет может делить свой собственный плагин без необходимости синтаксического анализа одного файла конфигурации для ссылки на себя. В этом случае просто происходит, что «init» является логическим именем для каталога, SysVinit пришел первым и использовал init.d , а Upstart использовал plain init для каталога с аналогичной целью (он был бы более «мейнстрим» »И, возможно, менее высокомерным, если бы вместо этого использовали /etc/upstart.d ).

¹ не считая initrd

    
ответ дан Gilles 02.10.2010 в 01:28
источник
23

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

Например, /etc/apache/conf.d/ или /etc/apt/sources.d/

В случаях, когда важно, какой порядок они должны быть включены / выполнены, файлы в этих каталогах иногда начинаются с числа, такого как «00-default» или «80-user», чтобы они выполнялись в правильном порядке.

В случае /etc/init.d/ это означает, что все сценарии в «init.d» должны быть выполнены. В настоящее время, однако, система инициализации современных операционных систем немного более активна, чем это, но имя каталога все еще существует.

    
ответ дан thomasrutter 10.05.2013 в 04:51
9

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

Причина, по которой каталог /etc/init , а не /etc/upstart , заключается в том, что Upstart - это имя проекта, фактический установленный двоичный файл все еще /sbin/init , поэтому для его конфигурации не было бы смысла иметь имя, которое не было сопоставить двоичный файл.

    
ответ дан Scott 13.10.2010 в 03:59