Comandos de Linux

Cómo ejecutar comandos y scripts de Linux automáticamente en un reinicio del sistema

Cómo ejecutar comandos y scripts de Linux automáticamente en un reinicio del sistema
La ejecución automática de aplicaciones y scripts al inicio puede resultar útil para automatizar tareas y eventos de inicio comunes. Este artículo explicará algunos métodos que se pueden utilizar para iniciar aplicaciones y scripts en un nuevo reinicio o un nuevo inicio de sesión.

Aplicaciones de inicio

Ubuntu y otras distribuciones basadas en GNOME vienen con una aplicación llamada simplemente "Aplicaciones de inicio". Se puede usar para administrar aplicaciones y scripts que se ejecutan en un reinicio o inicio de sesión nuevo del sistema.

Inicie la aplicación "Aplicaciones de inicio" desde el iniciador de aplicaciones y haga clic en el botón "Agregar" para agregar una nueva entrada.

Complete los campos "Nombre" y "Comando" según sus necesidades y luego haga clic en el botón "Agregar" para terminar de crear una nueva entrada. La entrada creada en la captura de pantalla a continuación enviará un recordatorio de "Hacer una copia de seguridad" como notificación del sistema en cada reinicio / inicio de sesión. Puede reemplazarlo con su propio comando o con la ruta completa de su script bash. También puede usar cualquier comando del sistema existente o ejecutables que generalmente se encuentran en varias carpetas "bin" en todo el sistema de archivos.

Como se indicó anteriormente, se muestra un recordatorio de respaldo en cada reinicio.

Systemd

Systemd es un demonio y administrador de servicios que contiene varias utilidades para administrar los procesos del sistema y los componentes del sistema operativo. En su forma simplista, normalmente se utiliza para iniciar y finalizar servicios en un nuevo ciclo de arranque.

Systemd se puede utilizar para iniciar automáticamente una aplicación o ejecutar un script en un nuevo arranque. Para crear la misma notificación de recordatorio de copia de seguridad explicada anteriormente, primero debe crear las carpetas y el archivo necesarios ejecutando los siguientes comandos:

$ mkdir -p ~ /.config / systemd / user
$ nano ~ /.config / systemd / user / backup_reminder.Servicio

Reemplace "nano" con el comando de su editor de texto favorito. Reemplaza "backup_reminder" con cualquier otro nombre que prefieras.

Pegue el código a continuación en backup_reminder.archivo de servicio creado con el comando anterior.

[Unidad]
Descripción = Envía un recordatorio de respaldo en cada reinicio
PartOf = sesión gráfica.objetivo
[Servicio]
ExecStart = bash -c 'dormir 10; notificar-enviar "Hacer una copia de seguridad" '
Tipo = oneshot
[Instalar en pc]
WantedBy = sesión gráfica.objetivo

El código anterior es bastante sencillo. Envía una notificación de "Hacer una copia de seguridad" 10 segundos después de que se cargue la sesión gráfica (una vez cada reinicio o inicio de sesión).

Ejecute los siguientes comandos para habilitar el servicio de modo que pueda ejecutarse automáticamente en cada reinicio.

$ chmod 644 ~ /.config / systemd / user / backup_reminder.Servicio
$ systemctl - usuario habilita backup_reminder.Servicio
$ systemctl --user daemon-reload
$ reiniciar

Este es solo un ejemplo simple de ejecutar un comando básico en el arranque usando systemd. También puede crear servicios avanzados con múltiples condiciones y múltiples comandos. Para obtener más información, consulte la página de manual de systemd ejecutando el siguiente comando:

$ man systemd

Tenga en cuenta que este ejemplo explica la creación de un nuevo servicio que no requiere acceso de root y es adecuado para aplicaciones de inicio automático que no requieren permisos de root. Si desea iniciar automáticamente los scripts que requieren acceso de root, debe crear un nuevo servicio systemd en el directorio “/ etc / systemd / system” en lugar de “~ /.config / systemd / user ”y omita el interruptor“ -user ”en los comandos mencionados anteriormente.

Trabajo cron

Cron es una herramienta que puede ejecutar periódicamente tareas programadas de acuerdo con las condiciones especificadas por un usuario. Estos trabajos programados se crean en Crontab en un formato predefinido. En términos simples, Crontab le dice a Cron qué trabajos ejecutar y en qué momento.

Al igual que systemd, los trabajos crontab se pueden usar para iniciar aplicaciones y ejecutar scripts automáticamente al arrancar. Para agregar un nuevo trabajo cron, ejecute el siguiente comando:

$ crontab -e

Agregue las siguientes líneas al final del archivo de texto (inicia automáticamente el terminal GNOME en cada reinicio):

SHELL = / bin / bash
@reboot sleep 30 && DISPLAY =: 0 gnome-terminal

Puede usar su propio comando o proporcionar la ruta completa a un script de shell.

Tenga en cuenta que, a diferencia de systemd, cron no puede detectar si la sesión gráfica se ha cargado o no. Debe especificar un período de espera estimado hasta que se cargue el servidor X y un identificador de pantalla. Puede conocer su ID de pantalla ejecutando el siguiente comando:

$ echo $ DISPLAY

El retraso antes de la ejecución del comando o script depende de la configuración del sistema y el tiempo de arranque.

Rc.local

Otro método para ejecutar scripts y comandos al inicio es usar "rc.archivo local. Tenga en cuenta que en mis pruebas, no pude aplazar la ejecución del script hasta que la sesión gráfica estuviera activa. Agregar cualquier retraso de suspensión provoca un retraso en la visualización de la pantalla de inicio de sesión. Debido a esto, no tuve éxito al ejecutar aplicaciones gráficas al inicio usando rc.archivo local. Edición de rc.local también requiere acceso de root, a diferencia de todos los demás ejemplos explicados anteriormente.

Para agregar comandos / scripts a rc.archivo local, ejecute el siguiente comando (crea un nuevo rc.archivo local si no existe):

$ sudo nano / etc / rc.local

Agregue sus comandos entre "#! / bin / bash ”y las líneas“ exit 0 ”, como se muestra a continuación:

#! / bin / bash
ruta / a / my_script.sh
salir 0

Hacer rc.archivo local ejecutable ejecutando el siguiente comando:

$ sudo chmod + x / etc / rc.local

Simplemente reinicie para que la secuencia de comandos de inicio surta efecto.

Conclusión

Estos son algunos métodos que se pueden utilizar para ejecutar automáticamente scripts y aplicaciones al inicio. Si está buscando ejecutar scripts que no requieran acceso de root, le recomendaría usar la aplicación GUI "Startup Applications". Si desea ejecutar aplicaciones y scripts con acceso de root, le sugiero que cree un servicio systemd a nivel de sistema.

Sobre el Autor

Nitesh Kumar

Soy un desarrollador de software independiente y escritor de contenido que ama Linux, el software de código abierto y la comunidad de software libre.

Ver todas las publicaciones
Las mejores distribuciones de Linux para juegos en 2021
El sistema operativo Linux ha recorrido un largo camino desde su apariencia original, simple y basada en servidor. Este sistema operativo ha mejorado ...
Cómo capturar y transmitir su sesión de juego en Linux
En el pasado, los juegos solo se consideraban un pasatiempo, pero con el tiempo la industria del juego experimentó un gran crecimiento en términos de ...
Los mejores juegos para jugar con el seguimiento de manos
Oculus Quest presentó recientemente la gran idea del seguimiento manual sin controladores. Con un número cada vez mayor de juegos y actividades que ej...