
Estoy ejecutando Ubuntu donde tengo los directorios /etc/rc0.d
, /etc/rc1.d
, /etc/rc2.d
, ..., /etc/rc6.d
.
Archivos de ejemplo de mi máquina:
directory example symlinks in the dir
------------------------------------------
/etc/rc1.d: K76dovecot, K77ntp
/etc/rc2.d: S23ntp, S24dovecot
/etc/rc3.d: S23ntp, S24dovecot
/etc/rc4.d: S23ntp, S24dovecot
/etc/rc5.d: S23ntp, S24dovecot
Preguntas:
- ¿Cuál es el propósito de los múltiples directorios "rc"?
- ¿Por qué Ubuntu instaló duplicados de
dovecot
yntp
en todos los directorios exceptorc0.d
yrc6.d
? - Si se especifican varias veces como se indica arriba, ¿realmente se ejecutan varias veces?
- ¿Puedes deducir de lo anterior en qué orden se
dovecot
ejecutarántp
al inicio? - ¿Cuál es la forma correcta de decirle a Ubuntu que siempre se ejecute
ntp
antesdovecot
del inicio?
Respuesta1
Como otros han señalado, la respuesta tiene que verniveles de ejecuciónque son básicamente los modos de funcionamiento de un sistema operativo. En Linux, estos suelen ser:
ID Name Description
0 Halt Shuts down the system.
1 Single-user Mode Mode for administrative tasks.
2 Multi-user Mode Does not configure network interfaces and
does not export networks services.
3 Multi-user Mode with Networking Starts the system normally.
4 Not used/User-definable For special purposes.
5 Start the system normally with
with GUI As runlevel 3 + display manager.
6 Reboot Reboots the system.
Entonces, cada uno de los rcN
directorios contiene enlaces simbólicos a los scripts que deben ejecutarse en ese nivel de ejecución. Todos los scripts reales normalmente se encuentran en el /etc/init.d
directorio:
$ ls -l /etc/rc5.d/S22cron
lrwxrwxrwx 1 root root 14 Jan 14 2013 /etc/rc5.d/S22cron -> ../init.d/cron
Denominación de enlaces simbólicos
Un enlace simbólico cuyo nombre comience con an S
se iniciará en el nivel de ejecución en cuestión, mientras que aquellos cuyo nombre comience con K
se eliminarán. Observe que todos los enlaces en rc6.d
, el nivel de ejecución de reinicio, comienzan con K
. Esto se debe a que se deben detener todos para reiniciar y no se debe iniciar nada.
Los números después de la letra inicial se refieren al orden de ejecución de los scripts vinculados. Aquellos con números más bajos correrán antes que aquellos con números más altos. Entonces, en su ejemplo específico, S23ntp
se ejecutará (se iniciará en este caso)antes S24dovecot
.
Respuesta2
- Estos son
runlevel
s y son una iniciación estilo System V utilizada por la mayoría de los sistemas *NIX (con la notable excepción desystemd
los sistemas basados en -). Al arrancar, el kernel/usuario decide quérunlevel
debe ejecutar y ejecuta solo esorunlevel
. Lo que significa que, dependiendo de,runlevel
puedes iniciar con un conjunto diferente de programas. También hay niveles de ejecución para detener y reiniciar, pero como te estás centrando en la parte de inicio, ignorémoslos por ahora. - Dado que solo se ejecuta uno
runlevel
en el arranque, algunos programas deberían/querer iniciarse/detenerse en diferentesrunlevel
s con parámetros diferentes o iguales en el mismo orden o en diferente (no todos los niveles de ejecución son iguales en todos los sistemas operativos). Pero Ubuntu copia los niveles de ejecución 3-5 del 2, por eso son iguales. - Los números
runlevel
se ejecutan solo una vez al iniciar o cuando cambiarunlevel
. ntp
los scripts deben ejecutarse primero y luegodovecot
en los niveles de ejecución 2-5, no es el caso del nivel de ejecución 1. El número ordinal en los nombres de los scripts ( ) indica el orden de ejecución. Entonces, todo depende del nivel de ejecución que estés usando.S23ntp
- Depende de la Distro pero en el caso particular de Ubuntu puedes agregar tu script a los niveles de ejecución 1 y 2.
Más información en elWikipediaartículo sobre los niveles de ejecución de Ubuntu
Respuesta3
1) Los múltiples directorios rcX.d especifican qué servicios iniciar o detener durante el nivel de ejecución 'X'.
2) rc0.d es para el nivel de ejecución 0 que está apagado. rc6.d es para reiniciar. El resto son todos para diferentes niveles de ejecución (2 - 5). La S significa inicio y K significa matar. Estos son esencialmente enlaces a los scripts originales en /etc/rc.d. Los números después de S/K son la prioridad por la cual se iniciarán/terminarán los servicios.
3) Sí, si se especifican varias veces, el script de inicio/eliminación se ejecutará varias veces. Pero nadie quiere hacer eso.
4) Al observar los números de prioridad, el servicio ntp se iniciará primero y luego el dovecot.
5) El cuarto punto es el camino.