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