LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

Los sistemas Linux modernos usan systemd para administrar los demonios y la configuración del sistema. Systemd es un administrador de servicios y un sistema de inicialización, que reemplazó a SysvInit y existe desde hace casi una década.

Realiza varias tareas, como la gestión de demonios (iniciar, detener, deshabilitar y habilitar servicios), soporte de instantáneas y seguimiento de procesos, entre otros . Actualmente, es el sistema de inicialización predeterminado en la mayoría de las distribuciones de Linux.

Puede crear fácilmente un script personalizado que se puede ejecutar como un servicio systemd . En esta guía, veremos cómo puede ejecutar un script en un systemd justo antes de que el sistema se apague en un sistema Linux .

Para fines de demostración, estamos utilizando el servidor Rocky Linux 8. Pero serviría igualmente en RHEL, Fedora, AlmaLinux, etc.

Paso 1: Crear un Script de muestra

El primer paso es crear un script de shell que se ejecutará antes del apagado. Para fines de demostración, crearemos un script de shell simple llamado "sample_script.sh" que retrasa el apagado del sistema en 30 segundos .

Para ejecutar el script justo antes de que el sistema se apague, debe colocar el script en el directorio "/usr/lib/systemd/system-shutdown". Antes de ejecutar el apagado real, todos los ejecutables binarios en el  directorio "usr/lib/systemd/system-shutdown"  se ejecutarán en paralelo.

La ejecución de la acción no continúa hasta que se completan todos los archivos ejecutables.

$ sudo vim /usr/lib/systemd/system-shutdown/sample_script.sh

El script de shell simple que retrasa el apagado del sistema por 30 segundos se ve como se muestra a continuación.

#!/bin/bash
# Un script que obliga al sistema a esperar 30 segundos antes de apagarse
sleep 30

Guarde y salga del archivo. A continuación, haga que el script sea ejecutable.

$ sudo chmod u+x /usr/lib/systemd/system-shutdown/sample_script.sh

Paso 2: Cree un archivo de unidad Systemd para ejecutar el script de Shell

El siguiente paso es crear un archivo de unidad systemd para ejecutar el script de shell antes de que se apague el sistema. Crearemos el "execute-before-shutdown.service" archivo de servicio systemd como se muestra.

$ sudo vim /etc/systemd/system/execute-before-shutdown.service

Pegue las siguientes líneas de código .

[Unit]
Description=Execute custom script before system poweroff
DefaultDependencies=no
Before=shutdown.target 

[Service]
Type=oneshot
ExecStart=/usr/lib/systemd/system-shutdown/sample_script.sh
TimeoutStartSec=0

[Install]
WantedBy=shutdown.target

La tarea crucial aquí la realizan las directivas "Before=shutdown.target" y "TimeoutStartSec=0" .

Guarde los cambios y salga del archivo. A partir de entonces, actualice el archivo de configuración de systemd y habilite el script para que se inicie automáticamente la próxima vez que se encienda el sistema.

$ sudo systemctl daemon-reload
$ sudo systemctl enable execute-before-shutdown.service --now

Paso 3: Confirme el archivo de la unidad Systemd

Para confirmar que el script se está ejecutando antes de que el sistema se apague, simplemente ejecute el siguiente comando de apagado como se muestra:

$ sudo poweroff

Observará que el proceso de apagado se retrasará 30 segundos antes de que el sistema finalmente se apague.

Conclusión

Esperamos que los pasos descritos en esta guía le hayan dado una idea de cómo puede ejecutar un script de shell usando systemd en un sistema Linux.

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Formulario de acceso

Filtro por Categorías