Perché gli script init.d sono in etc?


16

Continuo a leggere / ascoltare che /etcè per i file di configurazione del sistema. Qualcuno può spiegarmi / darmi un po 'di intuizione sul perché questi script che avviano / fermano / riavviano vari programmi di solito si trovano /etcinvece /varo /usro qualcosa di simile?


Sebbene la domanda possa essere leggermente orientata all'opinione, penso che alla domanda si possa rispondere con fatti concreti.
Julie Pelletier,

Le domande sui motivi storici sono "basate sull'opinione"? Guardando indietro, è probabile che ci sia qualche motivo concreto per cui è successo qualcosa. Anche se è solo "perché il sig. Grandhacker l'ha reso così", non dipende dalle opinioni di nessuno che ora risponda alla domanda.
ilkkachu,

Solo che la domanda diceva "perché dovrebbero essere" che è un fattore scatenante per "discussioni colorate" basate sull'opinione. Modificato un po 'per renderlo meno. @Adam, ripristina se ritieni che ciò sia contrario alla tua intenzione.
ilkkachu,

1
Perché quando e come avviare i servizi è la configurazione del sistema.
OrangeDog,

1
Per l'uva passa isterica.
TMN,

Risposte:


22

All'inizio (sia storicamente, sia in fase di avvio ...), /etcfa parte di /(il primo filesystem montato), mentre /usrnon lo era (fino a quando i dischi non si sono ingranditi). /varcontiene dati temporanei , mentre questi script non sono temporanei.

Non è così semplice, ma è iniziato in quel modo e ci sono poche ragioni per rielaborare l'intero layout della directory.


1
Come dici tu, non è così semplice. Vari sistemi UNIX commerciali avevano veri e propri eseguibili binari in /etcun punto o nell'altro. Almeno init.dè per lo più script su sistemi moderni. Ma non è ancora possibile /etcmontarlo in sola lettura.
Satō Katsura,

2
@SatoKatsura: Con l'avvento dei linguaggi compilati che sembrano linguaggi di scripting ho iniziato a notare che alcuni script / etc (persino script init) vengono sostituiti da programmi go - eseguibili binari.
slebetman,

È anche interessante notare che i moderni sostituti di sysVinit in realtà usano semplici file di configurazione invece di script completi, quindi /etcpotrebbero finire ripuliti da cose non configurate.
GnP

/tmpcontiene dati temporanei. /varcontiene dati variabili
Neil McGuigan,

14

Gli script di avvio sono in realtà una parte importante della configurazione del sistema.

Anche se il processo di avvio è molto meno personalizzato rispetto a 15-30 anni fa e la maggior parte della configurazione di avvio è stata automatizzata, tutte le scelte amministrative che determinano la sequenza di avvio sono ancora presenti /etc.

Questo rappresenta un modo molto centralizzato per mantenere e fare il backup della configurazione del sistema. Sulla maggior parte dei sistemi, il backup /etcè sufficiente per consentire una reinstallazione dell'intero sistema con facilità. È sufficiente eseguire una reinstallazione completa con i programmi necessari e ripristinare il /etcbackup.


3

M. Dickey e M. Pelletier hanno entrambi acquistato i locali della domanda. Ma le premesse sono sbagliate.

Se hai letto che " /etcè per i file di configurazione del sistema", hai letto qualcosa che non dipinge il quadro completo per te. Guarda il nome. È "eccetera". La gente ha messo tutto dentro il lavandino della cucina una volta o l'altra.

  • /etc/rc era (e su alcuni sistemi lo è ancora) l'esecuzione del programma per avviare tutto.
  • Il file di immagine del programma per il primo processo utente era /etc/inita un certo punto (in XENIX, ad esempio, molto prima che upstart fosse persino un'idea).
  • /etc/profile, /etc/zprofilee tutto il resto sono sicuramente script.
  • OpenBSD /etc/netstartè un programma; come è FreeBSD /etc/ipfw.rules.
  • Lo stesso vale per FreeBSD /etc/rc.suspende /etc/rc.resume; e in effetti /etc/rc.sendmail, /etc/rc.bsdextendede /etc/rc.firewall.

Allo stesso modo, se hai letto che "gli script che avviano / arrestano / riavviano vari programmi di solito sono /etcinvece di /varo /usro qualcosa di simile", hai letto qualcos'altro che non dipinge il quadro completo per te.

  • La convenzione di FreeBSD / PC-BSD prevede di avere una /usr/local/etc/rc.d/directory per gli rcscript del sistema non operativo . rcgli script per ogni sorta di cose vivono lì piuttosto che sotto /etc.
  • Troverete persone daemontools-Famiglia che mette alcune cose di gestione dei servizi in /var/sv, /var/servicee luoghi simili. (Il mio set di strumenti nosh, per esempio, fornisce quasi un migliaio di pacchetti di servizi in /var/sv. Gli unici pacchetti di servizi che vanno dentro /etc/service-bundlessono tra i 60 e i 70 che sono necessari prima del /usrmontaggio, inclusi i servizi che montano e controllano /usrse necessario.)
  • le convenzioni del sistema operativo di sistema hanno alcune cose che vivono /etc/systemd, alcune cose /run/systemd, altre cose /usr/lib/systemde ( anche se non sono documentate per ragioni inapplicabili ) alcune cose /usr/local/lib/systemd. Ancora una volta, la maggior parte delle "cose ​​per l'avvio / l'arresto dei servizi" si trova sotto /usrpiuttosto che sotto /etc.

2

Faresti bene a rivedere il file system Hierarchy Standard . Spiegherà (in dettaglio) esattamente perché, ma contiene anche tali informazioni su molti altri percorsi di cui potresti essere curioso.

Lo standard del filesystem è stato progettato per essere utilizzato da sviluppatori di distribuzione Unix, sviluppatori di pacchetti e implementatori di sistema. Tuttavia, è principalmente destinato a essere un riferimento e non è un tutorial su come gestire un filesystem Unix o una gerarchia di directory.


Non spiega lo sfondo storico.
Thorbjørn Ravn Andersen,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.