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

How Run Linux Commands



La ejecución automática de aplicaciones y scripts al inicio puede resultar útil para automatizar eventos y tareas 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, generalmente se usa para iniciar y finalizar servicios en un ciclo de inicio nuevo.

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 -pag~/.config/sistema/usuario
$nano~/.config/sistema/usuario/backup_reminder.service

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

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

[Unidad]
Descripción = Envía un recordatorio de respaldo en cada reinicio
PartOf = graphical-session.target

[Servicio]
ExecStart = bash -c 'dormir 10; notificar-enviar 'Hacer una copia de seguridad' '
Tipo = oneshot

[Instalar en pc]
WantedBy = graphical-session.target

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/sistema/usuario/backup_reminder.service
$ systemctl--usuario habilitarbackup_reminder.service
$ systemctl--usuariodaemon-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:

$hombresistema

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 la carpeta ~ / .config / systemd / user y omitir –user switch en los comandos mencionados anteriormente.

Trabajo cron

Cron es una herramienta que puede ejecutar periódicamente tareas programadas según 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 utilizar para iniciar aplicaciones y ejecutar scripts automáticamente al arrancar. Para agregar un nuevo trabajo cron, ejecute el siguiente comando:

$crontab-Y

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 utilizar 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 $ PANTALLA

La demora antes de la ejecución del comando o script depende de la configuración del sistema y el tiempo de inicio.

Rc.local

Otro método para ejecutar scripts y comandos al inicio es usar el archivo rc.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 el archivo rc.local. La 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 al archivo rc.local, ejecute el siguiente comando (crea un nuevo archivo rc.local si no existe):

$sudo nano /etc/rc.local

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

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

Haga que el archivo rc.local sea 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 usar 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 de aplicaciones de inicio. 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 y escritor de contenido independiente que ama Linux, el software de código abierto y la comunidad de software libre.

Ver todas las publicaciones