Qual è la differenza tra /etc/init/
e /etc/init.d/
?
Più in generale, quale significato .d
trasmette il suffisso a una directory?
Qual è la differenza tra /etc/init/
e /etc/init.d/
?
Più in generale, quale significato .d
trasmette il suffisso a una directory?
Risposte:
/etc/init.d
contiene gli script utilizzati dagli strumenti di inizializzazione di System V (SysVinit). Questo è il tradizionale pacchetto di gestione dei servizi per Linux, che contiene il init
programma (il primo processo che viene eseguito al termine dell'inizializzazione del kernel¹) nonché un'infrastruttura per avviare e arrestare i servizi e configurarli. Specificamente, i file in /etc/init.d
sono script shell che rispondono a start
, stop
, restart
, e (quando supportato) reload
comanda di gestire un particolare servizio. Questi script possono essere richiamati direttamente o (più comunemente) tramite qualche altro trigger (in genere la presenza di un collegamento simbolico /etc/rc?.d/
).
/etc/init
contiene i file di configurazione utilizzati da Upstart. Upstart è un giovane pacchetto di gestione dei servizi sostenuto da Ubuntu. I file in /etc/init
sono file di configurazione che raccontano Upstart come e quando start
, stop
, reload
la configurazione, o interrogare il status
di un servizio. A partire da lucido, Ubuntu sta passando da SysVinit a Upstart, il che spiega perché molti servizi vengono forniti con gli script SysVinit anche se si preferiscono i file di configurazione di Upstart. In effetti, gli script SysVinit sono elaborati da un livello di compatibilità in Upstart.
.d
nei nomi di directory in genere indica una directory contenente molti file di configurazione o script per una situazione particolare (ad esempio, /etc/apt/sources.list.d
contiene i file che sono concatenati per fare un virtuale sources.list
; /etc/network/if-up.d
contiene gli script che vengono eseguiti quando una rete i nter f asso è attivato). Questa struttura viene solitamente utilizzata quando ogni voce nella directory è fornita da una fonte diversa, in modo che ogni 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 semplicemente che "init" è un nome logico per la directory, SysVinit è arrivato per primo e usato init.d
, e Upstart ha usato semplicementeinit
per una directory con uno scopo simile (sarebbe stato più "mainstream", e forse meno arrogante, se avessero usato /etc/upstart.d
invece).
¹ senza contare initrd
upstart
o sysvinit
. E nelle ultime versioni, potrebbe anche essere systemd
(che non esisteva per Ubuntu quando ho scritto la mia risposta). È il pacchetto che fornisce /sbin/init
( dpkg -S /sbin/init
).
upstart
pacchetto che fornisce / sbin / init (eseguito dpkg -S /sbin/init
). Ma Bitnami ha inserito il suo script nella directory /etc/init.d. Questo non è forse in conflitto con la tua risposta a @AsheeshR sopra? Grazie.
".D" viene in genere aggiunto a un nome di directory per indicare che ciò che era (o che cosa avrebbe potuto essere) gestito da un singolo script o un singolo file di configurazione è stato diviso in più file per motivi di praticità, ma che dovrebbe essere incluso o eseguito insieme.
Ad esempio, /etc/apache/conf.d/
oppure/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-utente" in modo che vengano eseguiti nell'ordine giusto.
In questo caso /etc/init.d/
indica che gli script in "init.d" devono essere eseguiti tutti. Al giorno d'oggi, tuttavia, il sistema init dei moderni sistemi operativi è un po 'più coinvolto di così, ma il nome della directory è ancora lì.
.d
mezzo è correlato a un processo 'deamon' che normalmente viene avviato al momento dell'avvio.
Come fai notare, la nomenclatura ".d" è sconcertante e strana, e non ha davvero alcun posto in nessun sistema moderno - noterai che la maggior parte dei servizi moderni tende a lasciarla cadere.
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 corrispondesse al binario.
rules.d
, Xorg è relativamente recente xorg.conf.d
, non troppo vecchio /etc/profile.d
ecc.
.d
directory sono entrate con System V. Era una notazione sconcertante e alla fine probabilmente l'idea di una persona che è entrata nella base di codice e non poteva andarsene. Ad esempio, se ritieni checat
sia un brutto nome per l'attività che esegue, immagina quanti file in tutto il sistema dovresti toccare per cambiarlo.