Estoy corriendo 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 arriba, ¿se ejecutan realmente varias veces?
- ¿Puedes distinguir de lo anterior en qué orden
dovecot
yntp
se ejecutará al inicio? - ¿Cuál es la forma correcta de decirle a Ubuntu que siempre se ejecute
ntp
antesdovecot
en el inicio?
services
init-script
init.d
roger.james
fuente
fuente
Como otros han señalado, la respuesta se trata de niveles de ejecución, que son básicamente los modos de operación de un sistema operativo. En Linux, estos suelen ser:
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 están normalmente en el/etc/init.d
directorio:Nomenclatura simbólica de enlaces
Un enlace simbólico cuyo nombre comienza con un
S
se iniciará en el nivel de ejecución en cuestión, mientras que aquellos cuyo nombre comience conK
se matarán. Observe que todos los enlaces enrc6.d
el nivel de ejecución de reinicio comienzan conK
. Esto se debe a que todos deberían detenerse para reiniciar y no debería iniciarse 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 pequeños se ejecutarán antes que aquellos con números más altos. Entonces, en su ejemplo específico,
S23ntp
se ejecutará (comenzó en este caso) antesS24dovecot
.fuente
S01bluetooth
yS01rsync
, el orden será arbitrario?S01
la comparación seráb
<r
, se entiende la idea. ¡Tal vez!/etc/init.d/rc
dicefor s in /etc/rc$runlevel/S*; do …
, por lo que simplemente va en orden de expansión global; es decir, numérico / alfabético. La respuesta larga es que el código allí es mucho más complicado de lo que recuerdo. Intentaré pasar un tiempo serio estudiándolo en algún momento dentro de las próximas seis u ocho semanas. A primera vista, parece que está extrayendo el número después de laS
y hacer algo con él, asíS42beeblebrox
yS42zaphod
podría estar más estrechamente asociada que, por ejemplo,S43arthur
yS44dent
.1) Los directorios múltiples 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 para diferentes niveles de ejecución (2 - 5). La S significa inicio y K para 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 los servicios se iniciarán / matarán.
3) Sí, si se especifican varias veces, el script de inicio / eliminación se ejecutará varias veces. Pero nadie quiere hacer eso.
4) Mirando los números de prioridad, el servicio ntp se iniciará primero seguido de dovecot.
5) El cuarto punto es el camino.
fuente