Los directorios rc0.d,rc1.d,... en /etc

Los directorios rc0.d,rc1.d,... en /etc

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:

  1. ¿Cuál es el propósito de los múltiples directorios "rc"?
  2. ¿Por qué Ubuntu instaló duplicados de dovecoty ntpen todos los directorios excepto rc0.dy rc6.d?
  3. Si se especifican varias veces como se indica arriba, ¿realmente se ejecutan varias veces?
  4. ¿Puedes deducir de lo anterior en qué orden se dovecotejecutará ntpal inicio?
  5. ¿Cuál es la forma correcta de decirle a Ubuntu que siempre se ejecute ntpantes dovecotdel 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 rcNdirectorios 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.ddirectorio:

$ 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 Sse iniciará en el nivel de ejecución en cuestión, mientras que aquellos cuyo nombre comience con Kse 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, S23ntpse ejecutará (se iniciará en este caso)antes S24dovecot.

Respuesta2

  1. Estos son runlevels y son una iniciación estilo System V utilizada por la mayoría de los sistemas *NIX (con la notable excepción de systemdlos sistemas basados ​​en -). Al arrancar, el kernel/usuario decide qué runleveldebe ejecutar y ejecuta solo eso runlevel. Lo que significa que, dependiendo de, runlevelpuedes 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.
  2. Dado que solo se ejecuta uno runlevelen el arranque, algunos programas deberían/querer iniciarse/detenerse en diferentes runlevels 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.
  3. Los números runlevelse ejecutan solo una vez al iniciar o cuando cambia runlevel.
  4. ntplos scripts deben ejecutarse primero y luego dovecoten 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
  5. 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.

información relacionada