/etc/rc.d vs /etc/init.d

15

¿El /etc/init.ddirectorio de ubuntu es exactamente equivalente (funcionalmente) a lo que presumo que es el más estándar /etc/rc.d/(al menos en el arco)? ¿Hay alguna razón particular por la que canonical usa init.d en lugar de rc.d para los scripts de inicio?

Falmarri
fuente
1
en realidad arch linux es la única distribución que usa /etc/rc.dque he visto ... Sospecho que podría usarse en bsd.
xenoterracide
1
se usa en freebsd
wlraider70

Respuestas:

16

Ubuntu usa /etc/init.dpara almacenar scripts de SysVinit porque Ubuntu se basa en Debian y eso es lo que usa Debian. Usos de Red Hat /etc/rc.d/init.d. Olvidé lo que usa Slackware. Simplemente no hay una ubicación estándar.

Ubuntu está en el proceso de cambiar de SysVinit a Upstart , que utiliza archivos de configuración en /etc/init.

Gilles 'SO- deja de ser malvado'
fuente
2
Lo sentimos, pero /etc/init.d es el estándar, como parte del estándar SVR4 que los scripts de inicio de Linux copiaron.
Rich Homolka
El sitio web de Upstart afirma que Ubuntu lo ha estado utilizando desde la versión 6.10
badp
@badp: Aunque 6.10, todavía usaba scripts de inicio de estilo SysV en /etc/init.d. La transición /etc/init/*.confcomenzó más tarde (8.04 todavía era todo estilo SysV, 10.04 ya estaba en transición).
Gilles 'SO- deja de ser malvado'
2
Ubuntu cambió de Upstart a systemd desde 15.04.
PetroCliff
7

/etc/init.d era la antigua ubicación histórica de SVR4. Olvidé por qué redhat agregó el nivel /etc/rc.d/. Creo que aislar las cosas en rc.d, pero de todos modos necesitaba agregar un montón de enlaces simbólicos para la compatibilidad con versiones anteriores. Por lo tanto, hay /etc/init.d en redhat, solo enlaces simbólicos en otros lugares.

Entonces, la ubicación estándar es /etc/init.d, aunque puede ser un enlace simbólico, no un directorio real.

Hubo algunas distribuciones de Linux realmente antiguas que copiaron BSD con /etc/rc.local pero ya casi nadie lo usa.

Rich Homolka
fuente
5

Históricamente, el /etc/rc.dárbol de directorios denota un sistema Init que sigue la tradición 4.4 BSD de inicialización del sistema, que generalmente se denomina rcsistema init. Todos los sistemas BSD modernos (gratuitos / abiertos / netos) y Slackware Linux siguen esta tradición.

El /etc/init.dárbol de directorios denota el sistema de inicio del Sistema V (SysV) que sigue la tradición de inicialización del sistema AT&T UNIX, SunOS, Solaris. Esto se llama comúnmente el sistema SysV Init. Debian propiamente sigue esta tradición en la serie Wheezy, pero planea usar SystemD en la serie Jessie. Históricamente, RedHat y sus derivados han usado SysV Init, pero ya no lo hacen.

Además, con el tiempo, las distribuciones han adoptado las características de ambos esquemas init.

λ Jonas Gorauskas
fuente
Y luego está AIX con "/etc/rc.d/init.d/". Un poco de columna A y un poco de columna B.
DarkHeart
0

En realidad, al menos en CentOS 6.8 Santiago, /etc/init.des solo un enlace suave a /etc/rc.d.

chromechris
fuente
Eso es exactamente lo que quise decir, jaja. Perdón por la ortografía incorrecta, edité mi respuesta ahora.
chromechris
¿Por qué las personas votan negativamente sin dar una explicación? La declaración, a menos que sea intencionalmente irrelevante, aún puede tener valor o significado para algún lector novato. Explica cuando votas en contra. I +1 para deshacer el efecto de -1
Asad Iqbal
0

PuppyLinux tiene tanto /etc/rc.d como /etc/init.d , ninguno de los cuales es un enlace simbólico. Lo que es un enlace simbólico es /etc/rc.d/init.d , que enlaza un nivel con /etc/init.d (estoy viendo un Puppy basado en Slackware; también hay sabores basados ​​en Ubuntu y otros .) Hay un archivo README.txt en cada uno, que explica su enfoque.

Mark A. Williams
fuente
0

Ok, entonces, /etc/init.des un lugar donde puedes implementar rápidamente un script de inicio. El segundo paso para activar este script es ejecutar un chkconfigcomando en él. Digamos que corres chkconfig --add <yourscript>, se crearán enlaces simbólicos entre,/etc/init.d/<yourscript> y/etc/rc.d/rcX.d/S50<script>por ejemplo. X en rcX.d representa el número de nivel de ejecución del script y S50 representa el tipo de script (hay dos de estos tipos, S y K, S le dice al sistema que inicie el script cuando se inicia, y K le dice al sistema que salga del script con gracia cuando cierre. El número después de S / K representa el orden en que suceden, en caso de que tenga algunos scripts que dependen de que otros estén activos primero). Por defecto, si no se especifica ningún nivel de ejecución dentro del script o cuando emite el comando runlevel, CentOS6 crea scripts S50 para los niveles de ejecución 2,3,4,5 y K50 para los niveles de ejecución 0,1,6.

chromechris
fuente