Linux desde cero

¿Cómo introduzco en systemd un script en Bash para que arranque como demonio al prender la máquina?

Podemos crear un script en algun directorio del sistema en el ejemplo lo vamos a crear en el directorio /usr/bin el nombre que vamos a utilizar es script.sh

# cd /usr/bin
# vi mail_arranque.sh

Vamos a crear un script que envie un correo con la fecha y hora de arranque del equipo.

#!/bin/bash
echo se prendio el equipo $(hostname) a las $(date +%d-%m-%Y---%X) | mail fabian@carreralinux.com.ar

Salimos guardando
Este script cada vez que se enciende la maquina envia un email a la cuenta fabian@carreralinux.com.ar informando la fecha y la hora a la que se prendio.

Ahora otorgamos permisos de ejecucion al script.

# chmod +x /usr/bin/mail_arranque.sh

Vamos a definir luego la unidad de servicio de systemd (systemd serivce unit).
El archivo lo vamos a crear en la siguiente ruta:

/etc/systemd/system/mail_arranque.service

[Unit]
Description= Envio hora de arranque
After=network.target

[Service]
ExecStart=/usr/bin/mail_arranque.sh
Type=oneshot
RemainAfterExit=true

[Install]
WantedBy=default.target

Donde:

Description: información descriptiva que se muestra luego en el log de journal de systemd cuando ejecutamos el comando

# systemctl status servicio.service

After: indica el servicio luego del cual correrá nuestro script. En este caso para que funcione tenemos que tener levantados los servicios de red network.service
Se pueden agregar otros servicios separándolos por un espacio en blanco.

ExecStart: Permite que definamos la ruta al script.

Type: forking en este caso es utilizado por daemons o residentes para que realicen una clonación de la llamada al sistema. El proceso principal del servicio es creado con un pid especificado en el archivo de pid escrito a continuación.

WantedBy: especifica dentro de qué «target» de systemd debe ser instalado. En este ejemplo lo colocamos en el default.target.

Luego debemos darle permisos al nuevo archivo .service:

chmod 0644 /etc/systemd/system/mail_arranque.service

Por cierto, luego de crear nuestra unidad de servicio, o de modificarla en el futuro, siempre debemos ejecutar el comando:

systemctl daemon-reload

Habilitando y ejecutando

Con estos pasos listos, ahora podremos habilitar el servicio con:

systemctl enable mail_arranque.service

Y ejecutarlo con:

systemctl start mail_arranque.service

Si queremos ver el enlace blando creado podemos encontrarlo en /etc/systemd/system/default.target.wants/

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *