Búsqueda de sitios web

Cómo ejecutar automáticamente comandos/scripts durante el reinicio o el inicio


Siempre me fascinan las cosas que suceden detrás de escena cuando inicio un sistema Linux e inicio sesión. Al presionar el botón de encendido en una computadora básica o al iniciar una máquina virtual, se ponen en marcha una serie de eventos que conducen a un sistema completamente funcional, a veces en menos de un minuto. Lo mismo ocurre cuando cierra sesión y/o apaga el sistema.

Lo que hace que esto sea más interesante y divertido es el hecho de que puede hacer que el sistema operativo ejecute ciertas acciones cuando arranca y cuando inicia o cierra sesión.

En este artículo independiente de la distribución, discutiremos los métodos tradicionales para lograr estos objetivos en Linux.

Nota: Asumiremos el uso de Bash como shell principal para eventos de inicio y cierre de sesión. Si utiliza uno diferente, algunos de estos métodos pueden funcionar o no. En caso de duda, consulte la documentación de su shell.

Ejecutar scripts de Linux durante el reinicio o el inicio

Existen dos métodos tradicionales para ejecutar un comando o ejecutar scripts durante el inicio:

Método n.º 1: utilizar un trabajo cron

Además del formato habitual (minuto/hora/día del mes/mes/día de la semana) que se utiliza ampliamente para indicar una programación, el programador cron también permite el uso de @reboot. Esta directiva, seguida de la ruta absoluta al script, hará que se ejecute cuando se inicie la máquina.

Sin embargo, hay dos advertencias sobre este enfoque:

  1. a) el demonio cron debe estar ejecutándose (que es el caso en circunstancias normales), y
  2. b) el script o el archivo crontab deben incluir las variables de entorno (si las hay) que serán necesarias (consulte este hilo de StackOverflow para obtener más detalles).

Método n.º 2: utilizar /etc/rc.d/rc.local

Este método es válido incluso para distribuciones basadas en systemd. Para que este método funcione, debe otorgar permisos de ejecución a /etc/rc.d/rc.local de la siguiente manera:

chmod +x /etc/rc.d/rc.local

y agregue su script al final del archivo.

La siguiente imagen muestra cómo ejecutar dos scripts de muestra (/home/gacanepa/script1.sh y /home/gacanepa/script2.sh) usando un cron< job y rc.local, respectivamente, y sus respectivos resultados.

#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
#!/bin/bash
SITE="linux-console.net"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt

Tenga en cuenta que ambos scripts deben tener permisos de ejecución previamente:

chmod +x /home/gacanepa/script1.sh
chmod +x /home/gacanepa/script2.sh

Ejecución de scripts de Linux al iniciar y cerrar sesión

Para ejecutar una secuencia de comandos al iniciar o cerrar sesión, utilice ~.bash_profile y ~.bash_logout, respectivamente. Lo más probable es que tengas que crear este último archivo manualmente. Simplemente coloque una línea que invoque su secuencia de comandos en la parte inferior de cada archivo de la misma manera que antes y estará listo para comenzar.

Resumen

En este artículo, explicamos cómo ejecutar el script al reiniciar, iniciar sesión y cerrar sesión. Si se le ocurren otros métodos que podríamos haber incluido aquí, no dude en utilizar el formulario de comentarios a continuación para señalarlos. ¡Esperamos con interés escuchar de usted!