Vraag Wat is het verschil tussen / etc / init / en /etc/init.d/?


Wat is het verschil tussen /etc/init/ en /etc/init.d/?

Meer in het algemeen, welke betekenis heeft het .d achtervoegsel overbrengen naar een directory?


217
2017-10-01 22:59


oorsprong




antwoorden:


/etc/init.d bevat scripts gebruikt door de System V init-tools (SysVinit). Dit is het traditionele servicebeheerpakket voor Linux, met de init programma (het eerste proces dat wordt uitgevoerd wanneer de kernel klaar is met initialiseren¹), evenals een infrastructuur om services te starten en te stoppen en deze te configureren. Specifiek, bestanden in /etc/init.d zijn shellscripts waarop wordt gereageerd start, stop, restarten (indien ondersteund) reload opdrachten om een ​​bepaalde service te beheren. Deze scripts kunnen direct worden opgeroepen of (meestal) via een andere trigger (meestal de aanwezigheid van een symbolische link in /etc/rc?.d/).

/etc/init bevat configuratiebestanden die worden gebruikt door Upstart. Upstart is een jong servicebeheerpakket dat door Ubuntu wordt verdedigd. Bestanden in /etc/init zijn configuratiebestanden die Upstart vertellen hoe en wanneer start, stop, reload de configuratie, of vraag de status van een dienst. Vanaf lucide is Ubuntu overgestapt van SysVinit naar Upstart, wat verklaart waarom veel services worden geleverd met SysVinit-scripts, hoewel Upstart-configuratiebestanden de voorkeur hebben. In feite worden de SysVinit-scripts verwerkt door een compatibiliteitslaag in Upstart.

.d in mapnamen duidt gewoonlijk een map aan met veel configuratiebestanden of scripts voor een bepaalde situatie (bijv. /etc/apt/sources.list.d bevat bestanden die zijn samengevoegd om een ​​virtueel te maken sources.list; /etc/network/if-up.d bevat scripts die worden uitgevoerd wanneer een netwerk iknterfaas is geactiveerd). Deze structuur wordt meestal gebruikt wanneer elk item in de map wordt aangeboden door een andere bron, zodat elk pakket zijn eigen invoegtoepassing kan plaatsen zonder een enkel configuratiebestand te moeten parseren om naar zichzelf te verwijzen. In dit geval gebeurt het gewoon dat "init" een logische naam is voor de directory, SysVinit als eerste en gebruikt init.den Upstart gebruikt gewoon init voor een directory met een soortgelijk doel (het zou meer "mainstream" zijn geweest en misschien minder arrogant, als ze hadden gebruikt /etc/upstart.d in plaats daarvan).

¹ initrd niet meegerekend


217
2017-10-01 23:28



esoterische historische noot: de .d mappen ingevoerd met systeem V. Het was toen een raadselachtige notatie en uiteindelijk waarschijnlijk het idee van één persoon dat in de codebasis terechtkwam en niet kon verlaten. Bijvoorbeeld als u dat denkt cat is een slechte naam voor de taak die het uitvoert, stel je voor hoeveel bestanden in het systeem je zou moeten aanraken om het te veranderen. - msw
Op systemen die beide mappen hebben, welke van Upstart en SysVinit wordt gebruikt? Is er een manier om te controleren? - asheeshr
@AsheeshR Controleer of er een pakket is genaamd upstart of sysvinit. En in recente versies zou het kunnen zijn systemd ook (die bij Ubuntu nog niet bestond toen ik mijn antwoord schreef). Het is welk pakket dan ook biedt /sbin/init (dpkg -S /sbin/init). - Gilles
Op de AWB Ubuntu-instantie die ik gebruik (van Bitnami), is het de upstart pakket dat / sbin / init (uitgevoerd dpkg -S /sbin/init). Maar Bitnami heeft zijn script in de map /etc/init.d geplaatst. Is dit niet strijdig met uw antwoord op @AsheeshR hierboven? Dank je. - Sabuncu
@Sabuncu Dit is een voorbeeld van "SysVinit-scripts worden verwerkt door een compatibiliteitslaag in Upstart". - Gilles


De ".d" wordt meestal toegevoegd aan de naam van een map om aan te geven dat wat eerst was (of wat had kunnen zijn) werd afgehandeld door een enkel script of een enkel configuratiebestand, voor het gemak is gesplitst in meerdere bestanden, maar dat moeten samen worden opgenomen of uitgevoerd.

Bijvoorbeeld, /etc/apache/conf.d/ of /etc/apt/sources.d/

In gevallen waarin het belangrijk is welke volgorde ze moeten worden toegevoegd / uitgevoerd, beginnen de bestanden in deze mappen soms met een nummer, zoals "00-standaard" of "80-gebruiker", zodat ze in de juiste volgorde worden uitgevoerd.

In het geval van /etc/init.d/ Het geeft aan dat de scripts in "init.d" allemaal moeten worden uitgevoerd. Tegenwoordig is het init-systeem van moderne besturingssystemen echter een beetje meer betrokken dan dat, maar de mapnaam is er nog steeds.


26
2018-05-10 02:51



Misschien de .d betekent dat het gerelateerd is aan een 'deamon'-proces dat normaal gesproken bij het opstarten wordt gestart.
.d is absoluut voor directory, niet voor daemon. - Martin


Zoals je aangeeft, is de ".d" -nomenclatuur vreemd en vreemd en heeft het geen plaats in een modern systeem - je zult merken dat de meeste moderne diensten de neiging hebben om het te laten vallen.

De reden waarom de map is /etc/init en niet /etc/upstart is omdat Upstart de projectnaam is, het daadwerkelijk geïnstalleerde binaire bestand nog steeds is /sbin/init dus het zou niet logisch zijn als de configuratie een naam heeft die niet overeenkomt met het binaire bestand.


12
2017-10-13 01:59



Dit is verkeerd, zie b.v. udev's rules.d, Xorg is relatief recent xorg.conf.d, niet te oud /etc/profile.d enz.. - Ruslan