В чем разница между /etc/init/
и /etc/init.d/
?
В более общем плане, какое значение имеет .d
суффикс передается в каталог?
В чем разница между /etc/init/
и /etc/init.d/
?
В более общем плане, какое значение имеет .d
суффикс передается в каталог?
/etc/init.d
содержит сценарии, используемые средствами инициализации System V (SysVinit). Это традиционный пакет управления службами для Linux, содержащий init
программа (первый процесс, который запускается, когда ядро завершает инициализацию1), а также некоторая инфраструктура для запуска и остановки служб и их настройки. В частности, файлы в /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нтерfактивирован ace). Эта структура обычно используется, когда каждая запись в каталоге предоставляется другим источником, так что каждый пакет может размещать свой собственный подключаемый модуль без необходимости разбора отдельного файла конфигурации для ссылки на себя. В этом случае просто случается, что “init” - это логическое имя каталога, SysVinit появился первым и использовал init.d
, и Выскочка использовал обычную init
для каталога с аналогичной целью (это было бы более “мейнстрим” и, возможно, менее высокомерно, если бы они использовали /etc/upstart.d
вместо этого).
¹ не считая initrd
".d" обычно добавляется к имени каталога, чтобы указать, что то, что раньше (или что могло быть) обрабатывалось одним скриптом или одним файлом конфигурации, было разделено на несколько файлов для удобства, но которые должны быть включены или выполнены вместе.
Например, /etc/apache/conf.d/
или /etc/apt/sources.d/
В случаях, когда важно, в каком порядке они должны быть включены / выполнены, файлы в этих каталогах иногда начинаются с номера, например "00-default" или "80-user", чтобы они выполнялись в правильном порядке.
В случае /etc/init.d/
это как бы указывает на то, что все скрипты в "init.d" должны быть выполнены. Однако в настоящее время система инициализации современных операционных систем немного более сложна, чем это, но имя каталога все еще существует.
Как вы заметили, номенклатура ".d" вызывает недоумение и странность, и на самом деле ей нет места ни в одной современной системе - вы заметите, что большинство современных сервисов, как правило, отказываются от нее.
Причина, по которой каталог является /etc/init
и не /etc/upstart
это связано с тем, что Upstart - это название проекта, фактический установленный двоичный файл по-прежнему /sbin/init
таким образом, для его конфигурации не имело бы смысла иметь имя, которое не соответствовало бы двоичному файлу.