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


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

В более общем плане, какое значение имеет .d суффикс передать в каталог?


215
2017-10-01 22:59


Источник




Ответы:


/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 содержит сценарии, выполняемые в сети яNTERетуз активирован). Эта структура обычно используется, когда каждая запись в каталоге предоставляется другим источником, так что каждый пакет может делить свой собственный плагин без необходимости синтаксического анализа одного файла конфигурации для ссылки на себя. В этом случае просто происходит, что «init» является логическим именем для каталога, SysVinit пришел первым и использовал init.d, и Upstart использовал plain init для каталога с аналогичной целью (он был бы более «мейнстрим» и, возможно, менее высокомерным, если бы они использовали /etc/upstart.d вместо).

¹ не считая initrd


216
2017-10-01 23:28



эзотерическая историческая записка: .d каталоги, введенные в систему V. Это была загадочная нотация, и в конечном итоге, вероятно, идея одного человека, которая попала в кодовую базу и не могла уйти. Например, если вы думаете, что cat это плохое имя для выполняемой задачи, представьте, сколько файлов по всей системе вам нужно было бы прикоснуться, чтобы изменить ее. - msw
В системах, которые имеют обе каталоги, которые из Upstart и SysVinit используются? Есть ли способ проверить? - asheeshr
@AsheeshR Проверьте, есть ли пакет под названием upstart или sysvinit, И в последних версиях это может быть systemd (что не было для Ubuntu, когда я написал свой ответ). Это зависит от того, какой пакет /sbin/init (dpkg -S /sbin/init). - Gilles
На экземпляре AWS Ubuntu я использую (из Bitnami), это upstart пакет, который предоставляет / sbin / init (работает dpkg -S /sbin/init). Но Bitnami поместил свой скрипт в каталог /etc/init.d. Разве это не противоречит вашему ответу на @AsheeshR выше? Спасибо. - Sabuncu
@Sabuncu Это пример «Сценарии SysVinit обрабатываются уровнем совместимости в Upstart». - Gilles


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

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

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

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


26
2018-05-10 02:51



Возможно, .d означает, что он связан с процессом «deamon», который обычно запускается во время загрузки.
.d определенно для каталога, а не для демона. - Martin


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

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


12
2017-10-13 01:59



Это неправильно, см., Например, Udev-х rules.d, Относительно недавнее xorg.conf.d, не слишком старый /etc/profile.d и т.д.. - Ruslan