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


Siempre me fascinan las cosas que suceden tras bambalinas cuando arranco un sistema Linux y me conecto. Al presionar el botón de encendido en un metal descubierto o al iniciar una máquina virtual, pone en movimiento una serie de eventos que llevan a un sistema completamente funcional, a veces en menos de un minuto. Lo mismo ocurre cuando se desconecta 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 al iniciar o cerrar sesión.

En este artículo de distro-agnóstico, discutiremos los métodos tradicionales para lograr estos objetivos en Linux.

rojo

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

Existen 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 una programación, el programador cron también permite el uso de @reboot . Esta directiva, seguida de la ruta de acceso absoluta al script, hará que se ejecute cuando se inicie la máquina.

Sin embargo, hay dos advertencias a este enfoque:

  1. a) the cron daemon must be running (which is the case under normal circumstances), and
  2. b) the script or the crontab file must include the environment variables (if any) that will be needed (refer to this StackOverflow thread for more details).

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 añada su script en la parte inferior 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.

script1.sh:

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

script2.sh:

#!/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, utilice ~ .bash_profile y ~ .bash_logout , respectivamente. Lo más probable es que necesites crear el último archivo manualmente. Simplemente suelte 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 secuencias de comandos 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!