GNU/Linux >> Tutoriales Linux >  >> Cent OS

cómo agregar un script personalizado a systemd en CentOS/RHEL 7

La función systemd reemplaza los antiguos scripts de inicialización de System-V de versiones anteriores. systemd es una instalación impulsada por eventos que permite iniciar, controlar o detener subsistemas no dependientes en paralelo. Aquí explicamos cómo agregar un script personalizado a la función systemd.

1. Escribir y depurar el script personalizado

Por lo general, un script systemd se escribe como un script de shell. Comience escribiendo su script personalizado usando las convenciones normales. Llamaremos a nuestro script my-custom-script.sh y es sencillo:

#!/bin/sh
echo "I am a custom script" > /var/tmp/script.out
echo "The script was run at : `date`" >> > /var/tmp/script.out

El script debe ser ejecutable.

# chmod 0755 /var/tmp/my-custom-script.sh

2. Describa el script personalizado para systemd

Con el script escrito y probado manualmente, el script está listo para ser descrito en el sistema systemd. Para hacer esto, un [nombre].servicio se necesita archivo. La sintaxis usa el formato INI comúnmente usado para archivos de configuración. Continuando con nuestro ejemplo, necesitamos un archivo my-custom-script.service. El ejecutable se ejecutará exactamente una vez por cada vez que se inicie el servicio. El servicio no se iniciará hasta que la capa de red esté activa y estable.

Cree un nuevo archivo de unidad de servicio en /etc/systemd/system/my-custom-script.service con el contenido a continuación. El nombre de la unidad de servicio lo define el usuario y puede ser cualquier nombre de su elección.

# This is my-custom-script.service, which describes the my-custom-script.sh file
[Unit]
Description=This is executed on shutdown or reboot
DefaultDependencies=no
Wants=network-pre.target                                                                   # (if network is required before running the script)
Before=network-pre.target shutdown.target reboot.target halt.target                        # Defines the order in which units are stoped. #(REQUIRED)

[Service]
Type=oneshot                                                                               # enables specifying multiple custom commands that are then executed sequentially. (REQUIRED)
RemainAfterExit=true                                                                       # required by the oneshot setting (REQUIRED)
Environment=ONE='one' "TWO='2"                                                             # you can set some environment variables, that may be necessary to pass as arguments
ExecStart=/bin/true                                                                        # because is a shutdown script nothing is done when this service is started
ExecStop=/bin/bash /var/tmp/my-custom-script.sh ${ONE} ${TWO}                              # < --*********** change to the script full path ************ (REQUIRED)
TimeoutStopSec=1min 35s                                                                    # Configures the time to wait for stop. 

[Install]
WantedBy=multi-user.target                                                                 # When this unit is enabled, the units listed in WantedBy gain a Want dependency on the unit. (REQUIRED)

3. Habilite el script para futuros reinicios

Similar al chkconfig de versiones anteriores, el servicio debe estar habilitado. Dado que se agregó un nuevo servicio, notifique al demonio systemd que se reconfigure:

# systemctl enable my-custom-script.service
# systemctl daemon-reload


Cent OS
  1. Cómo cambiar las etiquetas del sistema de archivos en CentOS/RHEL

  2. Cómo agregar/eliminar un archivo de configuración regional en CentOS/RHEL 5,6

  3. Cómo agregar compatibilidad con idiomas adicionales en CentOS/RHEL

  4. Cómo agregar un script personalizado a systemd en CentOS/RHEL 7

  5. Cómo establecer de forma permanente la configuración de ethtool en CentOS/RHEL 6

Cómo agregar un usuario a un grupo en RHEL 8 / CentOS 8

Cómo habilitar el repositorio EPEL en RHEL 8 / CentOS 8 Linux

Cómo instalar/actualizar Systemd en RHEL/CentOS 7

CentOS/RHEL 7:Cómo verificar el estado de un servicio usando systemd

CentOS / RHEL:Cómo agregar una nueva partición de intercambio

Cómo agregar espacio de intercambio en servidores Linux (CentOS/RHEL) sobre la marcha