¿Cuál es la diferencia entre / etc / init / y /etc/init.d/?

216

¿Cuál es la diferencia entre /etc/init/ y /etc/init.d/ ?

Más en general, ¿qué significado tiene el sufijo .d en un directorio?

    
pregunta Olivier Lalonde 01.10.2010 - 22:59

3 respuestas

217

/etc/init.d contiene scripts utilizados por las herramientas de inicio de System V (SysVinit). Este es el paquete de administración de servicios tradicional para Linux, que contiene el programa init (el primer proceso que se ejecuta cuando el kernel ha terminado de inicializarse¹) así como también cierta infraestructura para iniciar y detener servicios y configurarlos. Específicamente, los archivos en /etc/init.d son scripts de shell que responden a los comandos start , stop , restart y (cuando se admite) reload para administrar un servicio en particular. Estos scripts se pueden invocar directamente o (más comúnmente) mediante algún otro disparador (generalmente la presencia de un enlace simbólico en /etc/rc?.d/ ).

/etc/init contiene archivos de configuración utilizados por Upstart. Upstart es un paquete de gestión de servicios joven defendido por Ubuntu. Los archivos en /etc/init son archivos de configuración que dicen Upstart cómo y cuándo start , stop , reload la configuración, o consulta el status de un servicio. Como lúcido, Ubuntu está pasando de SysVinit a Upstart, lo que explica por qué muchos servicios vienen con scripts SysVinit a pesar de que se prefieren los archivos de configuración Upstart. De hecho, los scripts de SysVinit son procesados ​​por una capa de compatibilidad en Upstart.

.d en los nombres de directorio normalmente indica un directorio que contiene muchos archivos de configuración o scripts para una situación particular (por ejemplo, /etc/apt/sources.list.d contiene archivos que se concatenan para crear un% virtual sources.list ; /etc/network/if-up.d contiene scripts que se ejecutan cuando una red i nter f ace está activada). Esta estructura se usa generalmente cuando cada entrada en el directorio es proporcionada por una fuente diferente, de modo que cada paquete puede depositar su propio complemento sin tener que analizar un solo archivo de configuración para hacer referencia a sí mismo. En este caso, simplemente sucede que "init" es un nombre lógico para el directorio, SysVinit fue primero y usó init.d , y Upstart usó plain init para un directorio con un propósito similar (hubiera sido más "mainstream" ", Y quizás menos arrogante, si hubieran usado /etc/upstart.d en su lugar).

¹ sin contar initrd

    
respondido por el Gilles 01.10.2010 - 23:28
26

El ".d" generalmente se agrega a un nombre de directorio para indicar que lo que solía ser (o lo que pudo haber sido) manejado por un solo script o un único archivo de configuración se ha dividido en varios archivos por razones de conveniencia , pero que deberían incluirse, o ejecutarse, juntos.

Por ejemplo, /etc/apache/conf.d/ o /etc/apt/sources.d/

En los casos en que es importante qué orden deben incluirse / ejecutarse, los archivos en estos directorios algunas veces comienzan con un número, como "00-default" u "80-user" para que se ejecuten en el orden correcto.

En el caso de /etc/init.d/ , indica que los scripts en "init.d" deben ejecutarse. Hoy en día, sin embargo, el sistema init de los sistemas operativos modernos está un poco más involucrado que eso, pero el nombre del directorio todavía está allí.

    
respondido por el thomasrutter 10.05.2013 - 02:51
12

Como usted señala, la nomenclatura ".d" es desconcertante y extraña, y realmente no tiene ningún lugar en ningún sistema moderno; notará que la mayoría de los servicios modernos han tendido a abandonarla.

La razón por la que el directorio es /etc/init y no /etc/upstart es porque Upstart es el nombre del proyecto, el binario instalado real todavía es /sbin/init , por lo que no tendría sentido que su configuración tenga un nombre que no coincide con el binario.

    
respondido por el Scott 13.10.2010 - 01:59

Lea otras preguntas en las etiquetas