Jaka jest różnica między / etc / init / i /etc/init.d/?

230

Jaka jest różnica między /etc/init/i /etc/init.d/?

Mówiąc bardziej ogólnie, jakie znaczenie .dsufiks nadaje katalogowi?

Olivier Lalonde
źródło

Odpowiedzi:

229

/etc/init.dzawiera skrypty używane przez narzędzia inicjujące System V (SysVinit). Jest to tradycyjny pakiet zarządzania usługami dla systemu Linux, zawierający initprogram (pierwszy proces uruchamiany po zakończeniu inicjowania jądra¹), a także infrastrukturę do uruchamiania i zatrzymywania usług i ich konfigurowania. Konkretnie, pliki /etc/init.dsą skrypty powłoki, które reagują na start, stop, restart, oraz (jeśli jest obsługiwany) reloadPolecenia do zarządzania określoną usługę. Skrypty te można wywoływać bezpośrednio lub (najczęściej) za pomocą innego wyzwalacza (zwykle obecność łącza symbolicznego /etc/rc?.d/).

/etc/initzawiera pliki konfiguracyjne używane przez Upstart. Upstart jest młodym pakietem do zarządzania usługami wspieranym przez Ubuntu. Pliki w /etc/initto pliki konfiguracyjne mówienie dorobkiewicz, jak i kiedy start, stop, reloadkonfiguracja lub zapytania statuso usługę. Zrozumiałe jest, że Ubuntu przechodzi z SysVinit na Upstart, co wyjaśnia, dlaczego wiele usług jest dostarczanych ze skryptami SysVinit, mimo że preferowane są pliki konfiguracyjne Upstart. W rzeczywistości skrypty SysVinit są przetwarzane przez warstwę zgodności w programie Upstart.

.dw nazwach katalogów zazwyczaj wskazuje na katalog zawierający wiele plików konfiguracyjnych lub skrypty dla danej sytuacji (np /etc/apt/sources.list.dzawiera pliki, które są łączone, aby wirtualny sources.list; /etc/network/if-up.dzawiera skrypty, które są wykonywane, gdy sieć i NTER f ace jest aktywna). Ta struktura jest zwykle używana, gdy każda pozycja w katalogu jest dostarczana z innego źródła, dzięki czemu każdy pakiet może zdeponować własną wtyczkę bez konieczności analizowania pojedynczego pliku konfiguracyjnego, aby się do niego odwoływać. W tym przypadku po prostu zdarza się, że „init” jest logiczną nazwą katalogu, SysVinit jest pierwszy i używany init.d, a Upstart używa zwykłegoinitdla katalogu o podobnym celu (byłby to bardziej „główny nurt” i być może mniej arogancki, gdyby go użył /etc/upstart.d).

¹ nie licząc initrd

Gilles
źródło
28
ezoteryczna notatka historyczna: .dkatalogi wprowadzone do Systemu V. To był wtedy zagadkowy zapis i ostatecznie prawdopodobnie pomysł jednej osoby, który wszedł do bazy kodów i nie mógł odejść. Na przykład, jeśli uważasz, że catto zła nazwa wykonywanego zadania, wyobraź sobie, ile plików w systemie należy dotknąć, aby je zmienić.
msw
W systemach, które mają oba katalogi, który z Upstart i SysVinit jest używany? Czy jest sposób na sprawdzenie?
asheeshr
3
@AsheeshR Sprawdź, czy istnieje pakiet o nazwie upstartlub sysvinit. A w najnowszych wersjach może być systemdrównież (co nie istniało dla Ubuntu, kiedy pisałem swoją odpowiedź). To którykolwiek pakiet zapewnia /sbin/init( dpkg -S /sbin/init).
Gilles,
W instancji AWS Ubuntu, której używam (z Bitnami), jest to upstartpakiet, który udostępnia / sbin / init (ran dpkg -S /sbin/init). Ale Bitnami umieścił swój skrypt w katalogu /etc/init.d. Czy nie jest to sprzeczne z odpowiedzią na @AsheeshR powyżej? Dziękuję Ci.
Sabuncu
@Sabuncu To jest przykład „Skrypty SysVinit są przetwarzane przez warstwę kompatybilności w Upstart”.
Gilles
29

„.D” jest zwykle dołączane do nazwy katalogu, aby wskazać, że to, co było (lub co mogło być) obsługiwane przez pojedynczy skrypt lub pojedynczy plik konfiguracyjny, dla wygody zostało podzielone na wiele plików, ale które powinny być uwzględnione lub wykonane razem.

Na przykład /etc/apache/conf.d/lub/etc/apt/sources.d/

W przypadkach, w których ważne jest, w jakiej kolejności powinny zostać uwzględnione / wykonane, pliki w tych katalogach czasami zaczynają się od numeru, na przykład „00-default” lub „80-user”, aby były wykonywane we właściwej kolejności.

W takim przypadku /etc/init.d/oznacza to, że wszystkie skrypty w „init.d” powinny zostać wykonane. Jednak w dzisiejszych czasach system init nowoczesnych systemów operacyjnych jest nieco bardziej zaangażowany, ale nazwa katalogu wciąż tam jest.

thomasrutter
źródło
Być może .doznacza to, że jest to związane z procesem „deamon”, który zwykle uruchamia się podczas uruchamiania systemu.
21
.d jest zdecydowanie dla katalogu, a nie demona.
Martin
13

Jak zauważyłeś, nomenklatura „.d” jest zagadkowa i dziwna, i tak naprawdę nie ma miejsca w żadnym nowoczesnym systemie - zauważysz, że większość nowoczesnych usług ją upuszcza.

Powodem, dla którego katalog jest /etc/initi nie /etc/upstartjest, ponieważ Upstart jest nazwą projektu, faktycznie zainstalowany plik binarny jest nadal, /sbin/initwięc nie ma sensu, aby jego konfiguracja miała nazwę, która nie pasuje do pliku binarnego.

Scott
źródło
7
To źle, patrz np. Udev rules.d, Xorg stosunkowo nowy xorg.conf.d, niezbyt stary /etc/profile.ditp.
Ruslan