Яка різниця між / etc / init / та /etc/init.d/?


Відповіді:


229

/etc/init.dмістить сценарії, використовувані інструментами init 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зі служби. Як і на простоту, 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це неправильне ім'я для виконуваного завдання, уявіть, скільки файлів у всій системі вам доведеться торкнутися, щоб змінити його.
msw

У системах, які мають обидва каталоги, який з 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 Це приклад „Сценарії SysVinit обробляються шаром сумісності в Upstart”.
Жиль

29

".D" зазвичай додається до імені каталогу, щоб вказати, що те, що раніше (або що могло бути) оброблялося одним сценарієм або одним файлом конфігурації, було зручно для зручності, але яке повинні бути включені або виконані разом.

Наприклад, /etc/apache/conf.d/або/etc/apt/sources.d/

У випадках, коли важливо, який порядок вони повинні бути включені / виконані, файли в цих каталогах іноді починаються з числа, наприклад "00-типово" або "80-користувач", щоб вони виконувались у потрібному порядку.

У цьому випадку /etc/init.d/це вказує на те, що всі сценарії в "init.d" повинні бути виконані. Однак на сьогодні система init сучасних операційних систем дещо більше задіяна, але назва каталогів все ще існує.


Можливо, .dзасоби, пов'язані з процесом "deamon", який зазвичай запускається під час завантаження.

21
.d, безумовно, для каталогу, а не демона.
Мартін

13

Як ви зазначаєте, номенклатура ".d" є дивовижною і дивною, і насправді не має місця в будь-якій сучасній системі - ви помітите, що більшість сучасних сервісів, як правило, її скидають.

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


7
Це неправильно, див. Напр. rules.d, Удев, відносно недавній Xorg xorg.conf.d, не надто старий /etc/profile.dтощо.
Руслан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.