¿Qué significa el sufijo .d en Linux?

33

Estoy configurando apache y por defecto tengo los directorios /etc/httpd/confy /etc/httpd/conf.d. ¿Cuál es la diferencia?

También se puede ver el sufijo en muchos otros directorios como /etc/init.d, /etc/cron.d, etc ...

SCL
fuente
1
significa que se refiere a un demonio
dinámico
8
@ yes123: Esa teoría no encaja bien /etc/apt/sources.list.d/, /etc/profile.detc.
Martin
De las respuestas dadas por Haakon y deltaray, me pregunto si .dsignifica default. No lo hace, según la información aquí, pero parece lógico. ¿Quizás pueda seguir adelante y pensar de esa manera?
Smandoli

Respuestas:

44

"d" significa directorio y dicho directorio es una colección de archivos de configuración que a menudo son fragmentos que se incluyen en el archivo de configuración principal. El punto es compartimentar las preocupaciones de configuración para aumentar la capacidad de mantenimiento.

Cuando tiene una distinción como /etc/httpd/confvs /etc/httpd/conf.d, generalmente es el caso que /etc/httpd/confcontiene varios tipos diferentes de archivos de configuración, mientras que un .ddirectorio contiene varias instancias del mismo tipo de archivo de configuración (como "módulos para cargar", "sitios para habilitar", etc. ), y el administrador puede agregar y quitar según sea necesario.

Haakon
fuente
44
pero conf también es un directorio, así que si ambos son directorios, ¿cuál es la diferencia? Tienes razón sobre ServerFault, ¿es posible moverlo?
SCL
Agregó un poco sobre la distinción, espero que no sea del todo confuso :-)
Haakon
77
Los directorios .d también suelen cargarse automáticamente. Por ejemplo, cron verificará cron.d y analizará cualquier archivo que haya allí, la configuración principal de apache tendrá algo como "include conf.d / *", que incluirá cualquier archivo dentro de conf.d en la recarga. También es muy útil para la gestión de paquetes de módulos. El administrador de paquetes no tiene que intentar editar archivos, simplemente coloca la configuración del módulo en el directorio .d correcto y luego vuelve a cargar el servicio.
Niall Donegan
13

La principal fuerza impulsora detrás de la existencia de esta convención de nomenclatura de directorios es la administración más sencilla de paquetes de archivos de configuración. Ya sea rpm, deb o lo que sea, es mucho más fácil (y probablemente más seguro) poder soltar un archivo en un directorio para que se incluya automáticamente en la configuración de un programa en lugar de intentar editar un archivo de configuración global.

Un buen ejemplo de esto es logrotate. En el directorio /etc/logrotate.d hay archivos de configuración para prácticamente todas las aplicaciones que ha instalado que mantienen un registro en / var / log . Algunos están agrupados en la configuración de syslog porque casi todos los sistemas tienen un archivo de mensajes, wtmp y lastlog. Pero si instala Apache en su sistema, necesita una manera fácil de agregar automáticamente la configuración para rotar los registros de Apache, por lo que simplemente suelta un archivo de configuración llamado httpd en /etc/logrotate.dy logrotate está configurado para incluir los archivos en ese directorio. Cada uno es propiedad del paquete para el demonio y si elimina el paquete, eliminará el archivo. Básicamente es una forma de modularizar los archivos de configuración. Tenga en cuenta que esto debe ser compatible con el programa, no es algo automático que el sistema hace por usted o algo así. Por lo general, los programas que lo hacen tienen una directiva de configuración llamada include que especifica dónde se encuentra ese directorio en el sistema de archivos.

logrotate.d podría incluso ser el primer lugar donde se usó esta convención fuera de los directorios init.d y rc.d para los scripts de inicio.

deltaray
fuente