GNU/Linux >> Tutoriales Linux >  >> Linux

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

Siempre estoy fascinado por 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 un metal desnudo o iniciar una máquina virtual, pone 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 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 usa uno diferente, algunos de estos métodos pueden o no funcionar. En caso de duda, consulte la documentación de su shell.

Ejecución de secuencias de comandos de Linux durante el reinicio o el inicio

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

Método n.° 1:usar un trabajo cron

Además del formato habitual (minuto/hora/día del mes/mes/día de la semana) que se usa mucho 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 arranque la máquina.

Sin embargo, hay dos advertencias a este enfoque:

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

Método n.º 2:utilice /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 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 cron trabajo 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 secuencias de comandos 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 este último archivo manualmente. Simplemente coloque una línea invocando 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, 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í, siéntase libre de usar el formulario de comentarios a continuación para señalarlos. ¡Esperamos saber de usted!


Linux
  1. ¿Qué son los scripts de Shell? ¿Cómo crear scripts de Shell?

  2. ¿Cómo resaltar los scripts de Bash en Vim?

  3. Cómo ejecutar un script de shell al inicio

  4. ¿Cómo ejecutar un script en segundo plano (linux openwrt)?

  5. Cómo ejecutar un archivo sin extensión .sh en shell

Cómo deshabilitar los comandos de apagado y reinicio en Linux

Cómo ejecutar comandos de Linux en un sistema remoto a través de SSH

Cómo ejecutar automáticamente secuencias de comandos y comandos de inicio de Linux

Cómo crear scripts de shell

¿Cómo ejecutar un comando en un script de Shell?

Systemd:cómo ejecutar el script solo al apagar (no al reiniciar)