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

222

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

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

    
posta Olivier Lalonde 02.10.2010 - 00:59

3 risposte

220

/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 programma init (il primo processo che viene eseguito quando il kernel ha terminato l'inizializzazione¹) e alcune infrastrutture per avviare e arrestare i servizi e configurarli. In particolare, i file in /etc/init.d sono script di shell che rispondono a start , stop , restart e (quando supportati) comandi reload 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. I file in /etc/init sono file di configurazione che indicano Upstart come e quando a start , stop , reload la configurazione, o interrogare 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 di directory indica in genere una directory contenente molti file di configurazione o script per una situazione particolare (ad esempio /etc/apt/sources.list.d contiene file concatenati per creare un% virtuale co_de%; sources.list contiene script che vengono eseguiti quando una rete i nter f è attivata). 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 ha utilizzato /etc/network/if-up.d , e Upstart ha usato init.d per una directory con uno scopo simile (sarebbe stato più "mainstream" ", E forse meno arrogante, se avessero usato init invece).

¹ senza contare initrd

    
risposta data Gilles 02.10.2010 - 01:28
28

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 motivi di convenienza , ma che dovrebbe essere incluso o eseguito insieme.

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

Nei casi in cui è importante quale ordine dovrebbero 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.

Nel 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ì.

    
risposta data thomasrutter 10.05.2013 - 04:51
13

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 che la sua configurazione avesse un nome che non corrisponde al binario.

    
risposta data Scott 13.10.2010 - 03:59

Leggi altre domande sui tag