it-swarm.dev

Jaký je rozdíl mezi / etc / init / a /etc/init.d/?

Jaký je rozdíl mezi /etc/init/ a /etc/init.d/?

Obecněji, jaký význam má .d přípona předat do adresáře?

235
Olivier Lalonde

/etc/init.d obsahuje skripty používané nástroji System V init (SysVinit). Toto je tradiční balíček správy služeb pro Linux, obsahující program init (první proces, který se spustí po dokončení inicializace jádra¹), a také nějakou infrastrukturu pro spouštění a zastavování služeb a jejich konfiguraci. Konkrétně soubory v /etc/init.d jsou Shell skripty, které reagují na start, stop, restart a (pokud jsou podporovány) reload příkazy pro správu konkrétní služby. Tyto skripty lze vyvolat přímo nebo (nejčastěji) pomocí nějakého jiného spouštěče (obvykle přítomnost symbolického odkazu v /etc/rc?.d/).

/etc/init obsahuje konfigurační soubory používané programem Upstart. Upstart je mladý balíček pro správu služeb, který prosazuje Ubuntu. Soubory v /etc/init jsou konfigurační soubory, které říkají Upstart, jak a kdy start, stop, reload konfiguraci, nebo dotazovat status služby. Jak je přehledné, Ubuntu přechází z SysVinit na Upstart, což vysvětluje, proč mnoho služeb přichází se skripty SysVinit, i když jsou upřednostňovány konfigurační soubory Upstart. Ve skutečnosti jsou skripty SysVinit zpracovány vrstvou kompatibility v Upstartu.

.d v názvech adresářů obvykle označuje adresář obsahující mnoho konfiguračních souborů nebo skriptů pro konkrétní situaci (např. /etc/apt/sources.list.d obsahuje soubory, které jsou zřetězeny, aby vytvořily virtuální sources.list; /etc/network/if-up.d obsahuje skripty, které se provádějí, když je aktivována síť i nter f eso). Tato struktura se obvykle používá, když je každá položka v adresáři poskytována z jiného zdroje, takže každý balíček může uložit svůj vlastní plug-in, aniž by musel analyzovat jeden konfigurační soubor, aby se sám odkazoval. V tomto případě se prostě stane, že „init“ je logické jméno pro adresář, SysVinit přišel první a použil init.d a Upstart použili prostý init pro adresář s podobným účelem (bylo by to více „mainstreamové“ a možná méně arogantní, pokud by použili /etc/upstart.d namísto).

¹ nepočítám initrd

".D" je obvykle připojeno k názvu adresáře, což znamená, že to, co bývalo (nebo co mohlo být) zpracováno jediným skriptem nebo jediným konfiguračním souborem, bylo pro větší přehlednost rozděleno do několika souborů, ale které by měly být zahrnuty nebo provedeny společně.

Například, /etc/Apache/conf.d/ nebo /etc/apt/sources.d/

V případech, kdy je důležité, jaké pořadí mají být zahrnuty/provedeny, soubory v těchto adresářích někdy začínají číslem, například „00-default“ nebo „80-user“, takže se provádějí ve správném pořadí.

V případě /etc/init.d/ to značí, že všechny skripty v "init.d" by měly být všechny provedeny. V dnešní době je však iniciační systém moderních operačních systémů o něco více zapojen, ale název adresáře tam stále zůstává.

30
thomasrutter

Jak zdůrazňujete, nomenklatura „.d“ je záhadná a podivná a ve skutečnosti nemá žádné místo v žádném moderním systému - všimnete si, že většina moderních služeb ji spíše upustila.

Důvodem je adresář /etc/init a ne /etc/upstart je proto, že Upstart je název projektu, skutečný nainstalovaný binární soubor je stále /sbin/init tak to by nemělo smysl pro jeho konfiguraci mít jméno, které neodpovídalo binární.

13
Scott