Jaka jest różnica między /etc/init/
i /etc/init.d/
?
Mówiąc bardziej ogólnie, jakie znaczenie .d
sufiks nadaje katalogowi?
źródło
Jaka jest różnica między /etc/init/
i /etc/init.d/
?
Mówiąc bardziej ogólnie, jakie znaczenie .d
sufiks nadaje katalogowi?
/etc/init.d
zawiera skrypty używane przez narzędzia inicjujące System V (SysVinit). Jest to tradycyjny pakiet zarządzania usługami dla systemu Linux, zawierający init
program (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.d
są skrypty powłoki, które reagują na start
, stop
, restart
, oraz (jeśli jest obsługiwany) reload
Polecenia 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/init
zawiera pliki konfiguracyjne używane przez Upstart. Upstart jest młodym pakietem do zarządzania usługami wspieranym przez Ubuntu. Pliki w /etc/init
to pliki konfiguracyjne mówienie dorobkiewicz, jak i kiedy start
, stop
, reload
konfiguracja lub zapytania status
o 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.
.d
w nazwach katalogów zazwyczaj wskazuje na katalog zawierający wiele plików konfiguracyjnych lub skrypty dla danej sytuacji (np /etc/apt/sources.list.d
zawiera pliki, które są łączone, aby wirtualny sources.list
; /etc/network/if-up.d
zawiera 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łegoinit
dla 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
.d
katalogi 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, żecat
to zła nazwa wykonywanego zadania, wyobraź sobie, ile plików w systemie należy dotknąć, aby je zmienić.upstart
lubsysvinit
. A w najnowszych wersjach może byćsystemd
również (co nie istniało dla Ubuntu, kiedy pisałem swoją odpowiedź). To którykolwiek pakiet zapewnia/sbin/init
(dpkg -S /sbin/init
).upstart
pakiet, który udostępnia / sbin / init (randpkg -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.„.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.źródło
.d
oznacza to, że jest to związane z procesem „deamon”, który zwykle uruchamia się podczas uruchamiania systemu.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/init
i nie/etc/upstart
jest, ponieważ Upstart jest nazwą projektu, faktycznie zainstalowany plik binarny jest nadal,/sbin/init
więc nie ma sensu, aby jego konfiguracja miała nazwę, która nie pasuje do pliku binarnego.źródło
rules.d
, Xorg stosunkowo nowyxorg.conf.d
, niezbyt stary/etc/profile.d
itp.