¿Por qué hay scripts init.d en etc.?

16

Sigo leyendo / escuchando que /etces para archivos de configuración del sistema. ¿Alguien puede explicar / darme una idea de por qué estos scripts que inician / detienen / reinician varios programas generalmente están en /etclugar de /varo son /usrsimilares?

Adam Thompson
fuente
Aunque la pregunta podría estar ligeramente orientada a la opinión, creo que la pregunta puede responderse con hechos reales.
Julie Pelletier
¿Las preguntas sobre razones históricas están "basadas en la opinión"? Mirando hacia atrás, es probable que haya alguna razón objetiva de por qué sucedió algo. Incluso si es solo "porque el Sr. Grandhacker lo hizo así", no depende de las opiniones de nadie que responda la pregunta ahora.
ilkkachu
Excepto que la pregunta decía "por qué deberían serlo", lo que es un detonante para "discusiones coloridas" basadas en la opinión. Editado un poco para hacerlo menos. @ Adam, vuelve si crees que esto va en contra de tu intención.
ilkkachu
1
Porque cuándo y cómo comienzan los servicios es la configuración del sistema.
OrangeDog
1
Para pasas histéricas.
TMN

Respuestas:

22

Al principio (tanto históricamente como en el proceso de arranque ...), /etcforma parte del /(primer sistema de archivos montado), mientras que /usrno lo fue (hasta que los discos se agrandaron). /varcontiene datos temporales , mientras que estos scripts no son temporales.

No es tan simple, pero comenzó de esa manera y hay pocas razones para volver a trabajar todo el diseño del directorio.

Thomas Dickey
fuente
1
Como dices, no es tan simple. Varios sistemas comerciales UNIX tenían ejecutables binarios reales /etcen algún momento u otro. Al menos init.des principalmente scripts en sistemas modernos. Pero todavía no es posible haber /etcmontado solo lectura.
Satō Katsura
2
@SatoKatsura: con el advenimiento de los lenguajes compilados que parecen lenguajes de script, comencé a notar que algunos scripts / etc (incluso scripts de inicio) son reemplazados por programas go, ejecutables binarios.
slebetman
También es interesante notar que los reemplazos modernos de sysVinit en realidad usan archivos de configuración simples en lugar de scripts completos, por lo que /etcpodrían terminar limpiando cosas que no son de configuración.
GnP
/tmpcontiene datos temporales. /varcontiene datos variables
Neil McGuigan
14

Los scripts de inicio son en realidad una parte importante de la configuración del sistema.

Aunque el proceso de arranque está mucho menos personalizado que hace 15-30 años, y la mayor parte de la configuración de inicio se ha automatizado, todas esas opciones administrativas que determinan la secuencia de inicio todavía están presentes /etc.

Esto representa una forma muy centralizada de mantener y respaldar la configuración del sistema. En la mayoría de los sistemas, la copia de seguridad /etces suficiente para permitir la reinstalación de todo el sistema con facilidad. Simplemente realice una reinstalación completa con los programas necesarios y restaure su /etccopia de seguridad.

Julie Pelletier
fuente
3

M. Dickey y M. Pelletier han comprado las premisas de la pregunta. Pero las premisas están mal.

Si has leído que " /etces para los archivos de configuración del sistema", entonces has leído algo que no te muestra la imagen completa. Mira el nombre Es "etcétera". La gente ha puesto todo en el fregadero de la cocina allí en un momento u otro.

  • /etc/rc solía ser (y en algunos sistemas todavía lo es) el programa se ejecuta para iniciar todo.
  • El archivo de imagen del programa para el primer proceso de usuario se encontraba /etc/initen un punto (en XENIX, por ejemplo, mucho antes de que el arranque fuera una idea).
  • /etc/profile, /etc/zprofiley todo lo demás son definitivamente guiones.
  • OpenBSD's /etc/netstartes un programa; como es FreeBSD's /etc/ipfw.rules.
  • También lo son los FreeBSD /etc/rc.suspendy /etc/rc.resume; y, de hecho /etc/rc.sendmail, /etc/rc.bsdextendedy /etc/rc.firewall.

Del mismo modo, si usted ha leído que "scripts que de inicio / parada / reinicio diversos programas son por lo general en /etclugar de /varo /usro algo similar", entonces usted ha leído algo más que no pintar el cuadro completo para usted.

  • La convención de FreeBSD / PC-BSD es tener un /usr/local/etc/rc.d/directorio para rcscripts que no sean del sistema operativo . rcguiones para todo tipo de cosas viven allí en lugar de debajo /etc.
  • Encontrarás personas de daemontools-family poniendo algunas cosas de gestión de servicios /var/sv,/var/service y lugares similares. (Mi conjunto de herramientas nosh, por ejemplo, proporciona casi mil paquetes de servicios /var/sv. Los únicos paquetes de servicios que entran /etc/service-bundlesson los que se necesitan entre 60 y 70 antes de /usrmontarlos, incluidos los servicios que se montan y comprueban /usrsi es necesario).
  • Las convenciones del sistema operativo systemd tienen algunas cosas que viven /etc/systemd, algunas cosas /run/systemd, algunas cosas /usr/lib/systemdy ( aunque está indocumentado por razones inaplicables ) algunas cosas /usr/local/lib/systemd. Nuevamente, la mayoría de las "cosas para iniciar / detener servicios" se encuentran en /usrlugar de debajo /etc.
JdeBP
fuente
2

Haría bien en revisar el Estándar de Jerarquía del Sistema de Archivos . Explicará (en detalle) exactamente por qué esto es así, pero también contiene dicha información en muchos otros caminos que pueden interesarle.

El estándar del sistema de archivos ha sido diseñado para ser utilizado por desarrolladores de distribución de Unix, desarrolladores de paquetes e implementadores de sistemas. Sin embargo, está destinado principalmente a ser una referencia y no es un tutorial sobre cómo administrar un sistema de archivos Unix o una jerarquía de directorios.

draeath
fuente
No explica los antecedentes históricos.
Thorbjørn Ravn Andersen
2

Digital UNIX colocó las secuencias de comandos bajo el /sbin/init.ddirectorio con bastante sensatez . Y también HP-UX, según la piedra rosetta .

thrig
fuente