Red Hat Training

A Red Hat training course is available for RHEL 8

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

  1. 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.
  2. Para volver a la configuración por defecto de la unidad, borre los archivos de configuración creados a medida en /etc/systemd/system/.
  3. 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 usuario root:

    init q
  4. 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
Importante

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

  1. 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 como root:

    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.

  2. 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.

  3. 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.

  1. 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
  2. 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 archivo custom_script.conf:

    [Service]
    ExecStartPost=/usr/local/bin/custom.sh
  3. Para aplicar los cambios de la unidad, ejecute:

    # systemctl daemon-reload
    # systemctl restart httpd.service
Nota

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.