Script que se ejecuta al apagar el equipo en Systemd

Publicado el sábado 07 de octubre de 2017 en Linux

Systemd image

Hay algunas veces que necesitamos ejecutar un script al apagar el sistema, como por ejemplo una tarea de limpieza, un chequeo, una actualización, etc.

En sistemas con SysVinit se ponía el script en el directorio rc0.d (apagado del sistema) y a funcionar. Con Systemd hay que realizar un archivo "unit" para que lo entienda systemd y en dicho archivo poner el script a ejecutar.

Lo primero que hay que hacer es crear el archivo "unit" (configuración del servicio) en un directorio de Systemd, yo uso /etc/systemd/system/, con el contenido siguiente y con la extensión .service:

MiScriptDeApagado.service

[Unit]
Description="Mi script de apagado"
Before=shutdown.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
# ExecStop=<Ruta del script a ejecutar o comando a ejecutar>
ExecStop="date -Iseconds >> /var/log/apagado.log"

[Install]
WantedBy=multi-user.target

Una vez guardado dicho archivo hay que aplicar los cambios en Systemd reiniciando el demonio y activando el servicio de la siguiente forma

systemctl daemon-reload
systemctl enable MiScriptDeApagado
systemctl start MiScriptDeApagado

Y con esto ya debería de funcionar. Actualmente lo tengo tal cual en un sistema Debian Stretch - 9 funcionando.

Si tenéis cualquier duda podéis dejarme un comentario.

Un saludo.