У чому різниця між /etc/init/
і /etc/init.d/
?
Загалом, яке значення .d
суфікс передає до каталогу?
У чому різниця між /etc/init/
і /etc/init.d/
?
Загалом, яке значення .d
суфікс передає до каталогу?
Відповіді:
/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
upstart
або sysvinit
. І в останніх версіях це могло бути systemd
так само (чого не було для Ubuntu ще тоді, коли я писав свою відповідь). Це залежно від пакета /sbin/init
( dpkg -S /sbin/init
).
upstart
пакет надає / sbin / init (run dpkg -S /sbin/init
). Але Bitnami розмістив свій сценарій у каталозі /etc/init.d. Невже це конфліктна відповідь на @AsheeshR вище? Дякую.
".D" зазвичай додається до імені каталогу, щоб вказати, що те, що раніше (або що могло бути) оброблялося одним сценарієм або одним файлом конфігурації, було зручно для зручності, але яке повинні бути включені або виконані разом.
Наприклад, /etc/apache/conf.d/
або/etc/apt/sources.d/
У випадках, коли важливо, який порядок вони повинні бути включені / виконані, файли в цих каталогах іноді починаються з числа, наприклад "00-типово" або "80-користувач", щоб вони виконувались у потрібному порядку.
У цьому випадку /etc/init.d/
це вказує на те, що всі сценарії в "init.d" повинні бути виконані. Однак на сьогодні система init сучасних операційних систем дещо більше задіяна, але назва каталогів все ще існує.
Як ви зазначаєте, номенклатура ".d" є дивовижною і дивною, і насправді не має місця в будь-якій сучасній системі - ви помітите, що більшість сучасних сервісів, як правило, її скидають.
Причина, в якій каталог є, /etc/init
а не /etc/upstart
в тому, що Upstart - це ім'я проекту, фактично встановлений бінарний файл все ще є, /sbin/init
тому його конфігурація не має сенсу мати ім'я, яке не відповідає бінарному.
rules.d
, Удев, відносно недавній Xorg xorg.conf.d
, не надто старий /etc/profile.d
тощо.
.d
каталоги, введені разом із системою V. Тоді це було дивовижне позначення і, зрештою, ймовірно, ідея однієї людини, яка потрапила до кодової бази і не змогла залишити її. Наприклад, якщо ви вважаєте, щоcat
це неправильне ім'я для виконуваного завдання, уявіть, скільки файлів у всій системі вам доведеться торкнутися, щоб змінити його.