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.