it-swarm-es.tech

/etc/rc.d frente a /etc/init.d

¿Es ubuntu's /etc/init.d directorio exactamente equivalente (funcionalmente) a lo que supongo que es el más estándar /etc/rc.d/ (al menos en Arch)? ¿Hay alguna razón en particular por la que canonical usó init.d en lugar de rc.d para los scripts de inicio?

15
Falmarri

Ubuntu usa /etc/init.d para almacenar scripts SysVinit porque Ubuntu está basado en Debian y eso es lo que usa Debian. Red Hat usa /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 pstart , que usa archivos de configuración en /etc/init .

/etc/init.d era la antigua ubicación histórica de SVR4. Olvidé por qué redhat agregó el nivel /etc/rc.d/. Pienso aislar cosas en rc.d, pero luego necesitaba agregar un montón de enlaces simbólicos de todos modos para compatibilidad con versiones anteriores. Así que hay /etc/init.d en redhat, solo tiene 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.

Había algunas distribuciones de Linux realmente antiguas que copiaban BSD con /etc/rc.local, pero casi nadie lo usa más.

7
Rich Homolka

Slackware todavía usa /etc/rc.d

FreeBSD usa /etc/rc.d y /usr/local/etc/rc.d

6
mazianni

Históricamente, el /etc/rc.d árbol de directorio denota un sistema de inicialización que sigue la tradición de inicialización del sistema 4.4 BSD, que normalmente se denomina sistema rc init. Todo el sistema BSD moderno (Free/Open/Net) y Slackware Linux siguen esta tradición.

Los /etc/init.d árbol de directorios denota el sistema de inicialización System V (SysV) que sigue la tradición de inicialización del sistema de AT&T UNIX, SunOS, Solaris. Esto se denomina comúnmente sistema SysV Init. Debian propiamente dicho todavía 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 características de ambos esquemas de inicio.

5

OK entonces, /etc/init.d es un lugar donde puede implementar rápidamente un script de inicio. El segundo paso para activar este script es ejecutar un comando chkconfig en él. Di 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 & K, S le dice al sistema que inicie el script cuando se inicia, y K le dice al sistema que salga del script con elegancia cuando cierre. El número después de S/K representa el orden en el que suceden, en caso de que tenga algunos scripts que dependan de que otros estén activos primero). De forma predeterminada, si no se especifica ningún nivel de ejecución dentro del script o cuando emite el comando de nivel de ejecución, 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.

0
chromechris

De hecho, al menos en CentOS 6.8 Santiago, /etc/init.d es solo un enlace suave a /etc/rc.d.

0
chromechris

PuppyLinux tiene / etc/rc.d y / 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 a / etc/init.d (estoy viendo un Slackware -basado Puppy - también hay basados ​​en Ubuntu y otros sabores.) Hay un README.txt en cada uno, explicando su enfoque.

0
Mark A. Williams