3.5.5. Modificación de archivos de unidad existentes
Los servicios instalados en el sistema vienen con archivos de unidad por defecto que se almacenan en el directorio /usr/lib/systemd/system/
. Los administradores del sistema no deben modificar estos archivos directamente, por lo que cualquier personalización debe limitarse a los archivos de configuración en el directorio /etc/systemd/system/
.
Procedimiento
Dependiendo del alcance de los cambios requeridos, elija uno de los siguientes enfoques:
-
Cree un directorio para los archivos de configuración suplementarios en
/etc/systemd/system/unit.d/
. Este método se recomienda para la mayoría de los casos de uso. Permite ampliar la configuración por defecto con funcionalidades adicionales, sin dejar de hacer referencia al archivo de unidad original. Por lo tanto, los cambios en la unidad por defecto introducidos con una actualización del paquete se aplican automáticamente. Consulte Ampliar la configuración de la unidad por defecto para obtener más información. -
Cree una copia del archivo original de la unidad
/usr/lib/systemd/system/
en/etc/systemd/system/
y realice los cambios allí. La copia anula el archivo original, por lo que los cambios introducidos con la actualización del paquete no se aplican. Este método es útil para realizar cambios significativos en las unidades que deben persistir independientemente de las actualizaciones del paquete. Consulte Anulación de la configuración de la unidad por defecto para más detalles.
-
Cree un directorio para los archivos de configuración suplementarios en
-
Para volver a la configuración por defecto de la unidad, borre los archivos de configuración creados a medida en
/etc/systemd/system/
. Para aplicar los cambios en los archivos de la unidad sin reiniciar el sistema, ejecute
systemctl daemon-reload
La opción
daemon-reload
recarga todos los archivos de unidad y recrea todo el árbol de dependencias, lo cual es necesario para aplicar inmediatamente cualquier cambio en un archivo de unidad. Como alternativa, puede lograr el mismo resultado con el siguiente comando, que debe ejecutarse bajo el usuarioroot
:init q
Si el archivo de unidad modificado pertenece a un servicio en ejecución, este servicio debe reiniciarse para aceptar la nueva configuración:
systemctl restart name.service
Para modificar las propiedades, como las dependencias o los tiempos de espera, de un servicio gestionado por un initscript de SysV, no modifique el propio initscript. En su lugar, cree un archivo de configuración drop-in systemd
para el servicio como se describe en Ampliación de la configuración de la unidad por defecto y Anulación de la configuración de la unidad por defecto. A continuación, gestione este servicio de la misma manera que un servicio normal de systemd
.
Por ejemplo, para ampliar la configuración del servicio network
, no modifique el archivo initscript /etc/rc.d/init.d/network
. En su lugar, cree un nuevo directorio /etc/systemd/system/network.service.d/
y un archivo drop-in systemd
/etc/systemd/system/network.service.d/my_config.conf
. A continuación, introduzca los valores modificados en el archivo drop-in. Nota: systemd
conoce el servicio network
como network.service
, por lo que el directorio creado debe llamarse network.service.d
3.5.5.1. Ampliación de la configuración de la unidad por defecto
Esta sección describe cómo ampliar el archivo de unidad por defecto con opciones de configuración adicionales.
Procedimiento
Para ampliar el archivo de unidad por defecto con opciones de configuración adicionales, cree primero un directorio de configuración en
/etc/systemd/system/
. Si se amplía una unidad de servicio, ejecute el siguiente comando comoroot
:mkdir /etc/systemd/system/name.service.d/
Sustituya name por el nombre del servicio que desea ampliar. La sintaxis anterior se aplica a todos los tipos de unidades.
Cree un archivo de configuración en el directorio creado en el paso anterior. Tenga en cuenta que el nombre del archivo debe terminar con el sufijo .conf. Escriba:
tocar /etc/systemd/system/name.service.d/config_name.conf
Sustituya config_name por el nombre del archivo de configuración. Este archivo se adhiere a la estructura normal de los archivos de la unidad, por lo que todas las directivas deben ser especificadas en las secciones apropiadas, ver Estructura de los archivos de la unidad.
Por ejemplo, para añadir una dependencia personalizada, cree un archivo de configuración con el siguiente contenido:
[Unit] Requires=new_dependency After=new_dependency
Donde new_dependency representa la unidad que debe marcarse como dependencia. Otro ejemplo es un archivo de configuración que reinicia el servicio después de la salida de su proceso principal, con un retraso de 30 segundos:
[Service] Restart=always RestartSec=30
Se recomienda crear pequeños archivos de configuración centrados sólo en una tarea. Dichos archivos se pueden mover o enlazar fácilmente a los directorios de configuración de otros servicios.
Para aplicar los cambios realizados en la unidad, ejecute como
root
:systemctl daemon-reload
systemctl restart name.service
Ejemplo 3.10. Ampliación de la configuración de httpd.service
Para modificar la unidad httpd.service de forma que se ejecute automáticamente un script de shell personalizado al iniciar el servicio Apache, realice los siguientes pasos.
Cree un directorio y un archivo de configuración personalizado:
# mkdir /etc/systemd/system/httpd.service.d/
# touch /etc/systemd/system/httpd.service.d/custom_script.conf
Siempre que el script que desea iniciar automáticamente con Apache se encuentre en
/usr/local/bin/custom.sh
, inserte el siguiente texto en el archivocustom_script.conf
:[Service] ExecStartPost=/usr/local/bin/custom.sh
Para aplicar los cambios de la unidad, ejecute:
# systemctl daemon-reload
# systemctl restart httpd.service
Los archivos de configuración de los directorios de configuración en /etc/systemd/system/
tienen prioridad sobre los archivos de unidad en /usr/lib/systemd/system/
. Por lo tanto, si los archivos de configuración contienen una opción que sólo puede especificarse una vez, como Description
o ExecStart
, se anula el valor por defecto de esta opción. Tenga en cuenta que en la salida del comando systemd-delta
, descrita en Monitoreo de unidades anuladas, tales unidades están siempre marcadas como [EXTENDED], aunque en suma, ciertas opciones son realmente anuladas.