В чем разница между /etc/init/
и /etc/init.d/
? Р>
В более общем смысле, какой смысл суффикс .d
переносит в каталог?
В чем разница между /etc/init/
и /etc/init.d/
? Р>
В более общем смысле, какой смысл суффикс .d
переносит в каталог?
/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
«.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
, поэтому для его конфигурации не было бы смысла иметь имя, которое не было сопоставить двоичный файл.