Estoy aprendiendo la línea de comandos de un libro llamado " Linux Command Line and Shell Scripting Bible, Second Edition ". El libro dice esto:
Algunas implementaciones de Linux contienen una tabla de procesos para iniciarse automáticamente en el arranque. En los sistemas Linux, esta tabla generalmente se encuentra en el archivo especial / etc / inittabs.
Otros sistemas (como la popular distribución de Ubuntu Linux) utilizan la carpeta /etc/init.d, que contiene scripts para iniciar y detener aplicaciones individuales en el momento del arranque. Los scripts se inician a través de entradas en las carpetas /etc/rcX.d, donde X es un nivel de ejecución.
Probablemente porque soy nuevo en Linux, no entendí lo que significaba el segundo párrafo citado. ¿Alguien puede explicar lo mismo en un lenguaje mucho más claro?
fuente
Respuestas:
Vamos a olvidar
init.d
orcx.d
y mantener las cosas muy simple. Imagine que está programando un programa cuya única responsabilidad es ejecutar o eliminar otros scripts uno por uno.Sin embargo, su próximo problema es asegurarse de que funcionen en orden. ¿Cómo realizarías eso?
Y imaginemos que este programa buscó dentro de una
scripts
carpeta para ejecutar los scripts. Para ordenar la prioridad de los scripts, debe nombrarlos en un orden numérico. Este orden es lo que dicta la relación entreinit.d
yrc
En otras palabras,
init.d
contiene los scripts para ejecutar yrcX.d
contiene su orden de ejecución.El
X
valor enrcX.d
es el nivel de ejecución. Esto podría traducirse libremente al estado actual del sistema operativo.Si cava dentro de los
rcX.d
scripts, encontrará este formato:X
se reemplaza conK
oS
, que significa si el script debe estarkilled
ostarted
en el nivel de ejecución actualxx
es el número de ordenabcd
es el nombre del script (el nombre es irrelevante, sin embargo, donde apunta es el script que se ejecutará)fuente
Existen varios sistemas init diferentes para Linux. Los principales son SysVinit (el tradicional), Upstart (reemplazo de Ubuntu) y SystemD (impulsado por Fedora y Gnome). Los directorios
/etc/init.d
y/etc/rc?.d
son utilizados por SysVinit. El libro puede mencionarlos con respecto a Ubuntu porque la información está un poco anticuada (Ubuntu solía usar SysVinit como todos los demás) o porque esos directorios todavía existen por compatibilidad./etc/init.d
contiene un montón de scripts, cada uno con instrucciones para iniciar y detener un servicio. Algunos de estos servicios deben iniciarse en el momento del arranque; otros deben iniciarse en modo multiusuario pero no en modo de mantenimiento de usuario único; y es posible definir diferentes modos con diferentes conjuntos de servicios deseados. SysVinit maneja esto a través de los niveles de ejecución . El directorio/etc/rc$N.d
contiene los scripts para ejecutar al ingresar el nivel de ejecución N (/etc/rc$N.d/S*
) y los scripts para ejecutar al salir del nivel de ejecución N (/etc/rc$N.d/K*
). Debido a que muchos niveles de ejecución tienen secuencias de comandos en común, en lugar de almacenar una copia de las secuencias de comandos para cada nivel de ejecución, las secuencias de comandos se almacenan en una única ubicación/etc/init.d
y los directorios específicos del nivel de ejecución/etc/rc?.d
contienen enlaces simbólicos. Además, los nombres de los enlaces simbólicos indican si el servicio se debe iniciar (S*
) o detener (eliminarK*
) en ese nivel de ejecución, y se utiliza un prefijo numérico para controlar el orden en que se ejecutan los scripts.El script responsable de la travesía
/etc/rc$N.d
es/etc/init.d/rc
(en Ubuntu pre-Upstart y en Debian; las ubicaciones pueden variar en otras distribuciones de Linux).fuente
/etc/init.d
y/etc/rc?.d
más, y tiene Upstart en su lugar?/etc/init.d
( en lugar de.conf
archivos Upstart/etc/init
), por lo que Upstart todavía es compatible/etc/init.d
y/etc/rc?.d
por compatibilidad./etc/init.d
es el directorio al que pertenecen los scripts de inicio.Aquí
etc/rcX.d
es donde los enlaces controlan qué servicios se eliminan o inician al ingresar al nivel de ejecuciónX
. Los archivos quercX.d
comienzan con K se ejecutan con el parámetrostop
y los archivos que comienzan conS
se ejecutan con el parámetrostart
. Es típico secuenciar el inicio y el fin de la orden usando un número de dos dígitos después deK
oS
. Para garantizar el correcto inicio y finalización del pedido, es común que las dos secuencias sumen 100.Los programas se pueden deshabilitar en un nivel de ejecución eliminando los enlaces o cambiando el caso de
K
oS
haciak
os
.EDITAR: Los administradores generalmente ejecutan los scripts desde los
/etc/init.d
cuales puede haber un enlace simbólico a otro directorio dependiendo de la distribución. (Diferentes distribuciones tienen diferentes estándares).El
rcX.d
código de inicialización los utiliza para cambiar los niveles de ejecución.fuente
/etc/init.d
es un enlace simbólico al directorio bajo/etc/rc.d/init.d
/etc/init.d
es inútil sin/etc/rcX.d
? Y dado/etc/rcX.d
que el controlador de los programas que se inician al inicio, su función es similar a la de/etc/init.d
¿correcto?Aunque @BillThor lo ha respondido muy bien, aquí tengo mi comprensión
/etc/rcX.d
y/etc/init.d
:/etc/init.d
contiene scripts para iniciar y detener aplicaciones individuales en el momento del arranque./etc/rc?.d
Los directorios representan varios niveles de ejecución y los scripts que contiene no son más que enlaces simbólicos a los scripts reales en el/etc/init.d
directorio. Cambiar los niveles de ejecución cambia el modo del sistema, como el modo de usuario único muy básico al modo de solo consola a la interfaz gráfica avanzada.Por lo tanto, no hay uso de
/etc/rc?.d
directorios sin el/etc/init.d
propio (y, por supuesto, viceversa).fuente