Domanda Qual è la differenza tra / etc / init / e /etc/init.d/?


Qual è la differenza tra /etc/init/ e /etc/init.d/?

Più in generale, che significato ha il .d suffisso trasmettere a una directory?


217
2017-10-01 22:59


origine




risposte:


/etc/init.d contiene script usati dagli strumenti di avvio di System V (SysVinit). Questo è il tradizionale pacchetto di gestione dei servizi per Linux, contenente il init programma (il primo processo che viene eseguito quando il kernel ha terminato l'inizializzazione¹) e alcune infrastrutture per avviare e interrompere i servizi e configurarli. In particolare, file in /etc/init.d sono gli script di shell che rispondono start, stop, restarte (se supportato) reload comandi per gestire un particolare servizio. Questi script possono essere richiamati direttamente o (più comunemente) tramite altri trigger (in genere la presenza di un collegamento simbolico in /etc/rc?.d/).

/etc/init contiene i file di configurazione usati da Upstart. Upstart è un pacchetto di gestione dei servizi giovanile promosso da Ubuntu. File in /etc/init sono file di configurazione che dicono a Upstart come e quando start, stop, reload la configurazione, o interrogare il status di un servizio. Come di consueto, Ubuntu sta passando da SysVinit a Upstart, il che spiega il motivo per cui molti servizi vengono forniti con script SysVinit anche se i file di configurazione di Upstart sono preferiti. In effetti, gli script SysVinit vengono elaborati da un livello di compatibilità in Upstart.

.d nei nomi delle directory indica in genere una directory contenente molti file di configurazione o script per una particolare situazione (ad es. /etc/apt/sources.list.d contiene file concatenati per fare un virtuale sources.list; /etc/network/if-up.d contiene script che vengono eseguiti quando una rete ionterfl'asso è attivato). Questa struttura viene solitamente utilizzata quando ciascuna voce nella directory viene fornita da un'origine diversa, in modo che ciascun pacchetto possa depositare il proprio plug-in senza dover analizzare un singolo file di configurazione per fare riferimento a se stesso. In questo caso, succede solo che "init" è un nome logico per la directory, SysVinit è venuto prima e utilizzato init.d, e Upstart usato chiaro init per una directory con uno scopo simile (sarebbe stato più "mainstream", e forse meno arrogante, se avessero usato /etc/upstart.d anziché).

¹ senza contare initrd


217
2017-10-01 23:28



nota storica esoterica: il .d le directory inserite con System V. Era una notazione sconcertante allora e, in definitiva, probabilmente l'idea di una persona che entrò nella base di codice e non poteva andarsene. Ad esempio, se lo pensi cat è un brutto nome per il compito che svolge, immagina quanti file nel sistema dovresti toccare per cambiarlo. - msw
Sui sistemi, che hanno entrambe le directory, quale di Upstart e SysVinit è usato? C'è un modo per controllare? - asheeshr
@AsheeshR Controlla se è stato chiamato un pacchetto upstart o sysvinit. E nelle versioni recenti, potrebbe essere systemd pure (che non esisteva per Ubuntu quando ho scritto la mia risposta). È il pacchetto che fornisce /sbin/init (dpkg -S /sbin/init). - Gilles
Nell'istanza di Ubuntu di AWS che sto usando (da Bitnami), è il upstart pacchetto che fornisce / sbin / init (eseguito dpkg -S /sbin/init). Ma Bitnami ha piazzato il suo script nella directory /etc/init.d. Non è questo conflitto w / la tua risposta a @AsheeshR sopra? Grazie. - Sabuncu
@Sabuncu Questo è un esempio di "Gli script SysVinit sono elaborati da un livello di compatibilità in Upstart". - Gilles


Il ".d" viene di solito aggiunto al nome di una directory per indicare che ciò che era (o cosa avrebbe potuto essere) gestito da un singolo script o un singolo file di configurazione è stato diviso in più file per comodità, ma quale dovrebbe essere incluso o eseguito insieme.

Per esempio, /etc/apache/conf.d/ o /etc/apt/sources.d/

Nei casi in cui è importante quale ordine debbano essere inclusi / eseguiti, i file in queste directory a volte iniziano con un numero, come "00-default" o "80-user" in modo che vengano eseguiti nell'ordine corretto.

In caso di /etc/init.d/ indica che gli script in "init.d" dovrebbero essere tutti eseguiti. Al giorno d'oggi, tuttavia, il sistema di init dei moderni sistemi operativi è un po 'più complicato di così, ma il nome della directory è ancora lì.


26
2018-05-10 02:51



Forse il .d significa che è correlato a un processo "deamon" che normalmente viene avviato all'avvio.
.d è sicuramente per directory, non daemon. - Martin


Come fai notare, la nomenclatura ".d" è sconcertante e strana, e in realtà non ha alcun posto in alcun sistema moderno - noterai che la maggior parte dei servizi moderni ha avuto la tendenza a lasciar perdere.

Il motivo per cui la directory è /etc/init e non /etc/upstart è perché Upstart è il nome del progetto, l'attuale binario installato è ancora /sbin/init quindi non avrebbe senso per la sua configurazione avere un nome che non corrisponde al binario.


12
2017-10-13 01:59



Questo è sbagliato, vedi per es. udev di rules.d, Xorg è relativamente recente xorg.conf.dnon troppo vecchio /etc/profile.d eccetera.. - Ruslan