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 y me conecto. Al presionar el botón de encendido en un metal desnudo o al iniciar una máquina virtual, pone en movimiento una serie de eventos que conducen a un sistema completamente funcional, a veces en menos de un minuto. Lo mismo ocurre cuando cierra la 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 se inicia y cuando inicia o cierra sesión.

En este artículo distro-agnóstico, 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.

Ejecución de scripts de Linux durante el reinicio o el inicio

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

Además del formato habitual (minuto/hora/día del mes/mes/día de la semana) que se usa ampliamente para indicar un horario, 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 para 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).

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 secuencia de comandos 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 trabajo cron y rc. locales, 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="Tecmint.com"
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 un script al iniciar o cerrar sesión, use ~ .bash_profile y ~ .bash_logout , respectivamente. Lo más probable es que deba crear el último archivo manualmente. Simplemente coloque una línea invocando su script en la parte inferior de cada archivo de la misma manera que antes y estará listo para comenzar.

En este artículo, hemos explicado cómo ejecutar un script al reiniciar, iniciar sesión y cerrar sesión. Si puede pensar en 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!