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

230

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

В более общем смысле, что означает .dсуффикс для каталога?

Оливье Лалонд
источник

Ответы:

229

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

¹ не считая initrd

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

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

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

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

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

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

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

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

Скотт
источник
7
Это неправильно, смотрите, например, Udev rules.d, Xorg относительно недавно xorg.conf.d, не слишком старый и /etc/profile.dт. Д.
Руслан