Correr scripts al reiniciar el sistema y al iniciar o cerrar sesión

Al iniciar un sistema Linux se pone en funcionamiento una serie de eventos. Si todo sucede tal como se espera, en cuestión de segundos el sistema operativo estará listo para su uso. A continuación, cuando iniciamos sesión (y luego cuando la cerramos) sucede lo mismo. En este post mostraremos cómo correr scripts personalizados al bootear el equipo, y en el próximo cómo hacerlo al iniciar o cerrar sesión.

Los conceptos explicados en este post son aplicables a cualquier distribución hasta donde tengo conocimiento. En particular, asumimos que estamos usando Bash como shell por defecto. Otras shells deben funcionar similarmente; sin embargo, ante tal caso aconsejo consultar la documentación de las mismas.

Correr scripts al iniciar el sistema

En Linux hay al menos dos métodos para realizar este objetivo. Utilizaremos el primero para ejecutar script1.sh y el segundo para correr script2.sh. En ambos casos, por simplicidad, ilustramos el concepto al escribir una cadena de texto a un archivo. Sin embargo, el mismo principio aplica para acciones más complejas.

1) Usar cron

Además de utilizar el formato típico para establecer el momento en que se debe ejecutar un script, cron permite el uso de la directiva @reboot. Al utilizar la misma seguida por la ruta absoluta al script, hará que el mismo se ejecute al reiniciar o encender el equipo. Agreguemos la siguiente entrada a nuestro crontab:

@reboot /home/gacanepa/script1.sh

Si utilizamos este método, tenemos que asegurarnos de que el servicio de cron esté corriendo. Además, es necesario que ya sea en el script o en nuestro archivo crontab agreguemos las variables de entorno apropiadas (si es que necesitamos alguna).

2) Usar /etc/rc.d/rc.local

Este archivo es leído durante el inicio, y podemos utilizarlo para correr el script que deseemos ejecutar. Para hacerlo, debemos incluir la ruta al script al final del archivo, y otorgarle permisos de ejecución previamente a ambos:

chmod +x /etc/rc.d/rc.local
chmod +x /home/gacanepa/script2.sh

Teniendo los siguientes scripts:

script1.sh:

#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "La hora actual es $DATE" > $DIR/file1.txt

script2.sh:

#!/bin/bash
SITIO="Blog.carreralinux.com"
DIR=/home/gacanepa
echo "$SITIO es el mejor sitio de información sobre Linux en castellano... No te olvides de agregarnos a tus favoritos." > $DIR/file2.txt

En la Fig. 1 podemos ver el resultado luego de reiniciar el equipo:

Correr scripts al reiniciar el equipo
Figura 1 – Correr scripts al reiniciar el equipo

Espero que este post les haya resultado de utilidad. En el próximo aprenderemos cómo ejecutar scripts al iniciar o cerrar sesión. ¡No se lo pierdan!