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
Ejecutar aplicaciones y scripts automáticamente en el inicio puede ser útil para automatizar tareas y eventos comunes de arranque. Este artículo explicará algunos métodos que se pueden utilizar para lanzar aplicaciones y scripts en un reinicio nuevo o un nuevo inicio de sesión.

Aplicaciones de inicio

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

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

Complete los campos de "nombre" y "comando" según sus necesidades y luego haga clic en el botón "Agregar" para finalizar la creación de 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 una ruta completa de su script bash. También puede usar cualquier comando de sistema existente o ejecutable generalmente ubicado en varias carpetas "bin" en el sistema de archivos.

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

System

Systemd es un administrador de demonios y servicio que contiene varias utilidades para administrar procesos del sistema y componentes del sistema operativo. En su forma simplista, generalmente se usa para iniciar y terminar los servicios en un ciclo de arranque 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 requeridos ejecutando los comandos a continuación:

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

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 backup_reminder.Archivo de servicio creado usando el comando anterior.

[Unidad]
Descripción = envía un recordatorio de copia de seguridad en cada reinicio
Partef = Sesión gráfica.objetivo
[Servicio]
Execstart = bash -c 'sleep 10; Notificar-enviar "hacer una copia de seguridad" '
Tipo = onehot
[Instalar]
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 cargar la sesión gráfica (una vez que cada reinicio o inicio de sesión).

Ejecute los comandos a continuación para habilitar el servicio para que pueda ejecutarse automáticamente en cada reinicio.

$ chmod 644 ~/.config/systemd/user/backup_reminder.servicio
$ systemctl -user habilitar backup_reminder.servicio
$ SystemCTL-User Reload Daemon
$ 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 Systemd Man ejecutando el comando a continuación:

$ hombre systemd

Tenga en cuenta que este ejemplo explica la creación de un nuevo servicio que no requiere acceso raíz y es adecuado para aplicaciones de inicio automático que no requiere permisos raíz. Si desea scripts de inicio automático que requieren acceso raíz, debe crear un nuevo servicio Systemd en el directorio "/etc/systemd/system" en lugar de "~//.Config/systemd/user "carpeta y omitir el conmutador" -user "en los comandos mencionados anteriormente.

Trabajo cron

Cron es una herramienta que puede ejecutar tareas programadas periódicamente 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é Jobs ejecutará en qué punto del tiempo.

Al igual que Systemd, los trabajos crontab se pueden usar para iniciar aplicaciones y ejecutar scripts automáticamente en el arranque. Para agregar un nuevo trabajo cron, ejecute el comando a continuación:

$ crontab -e

Agregue las siguientes líneas al final del archivo de texto (lanza 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 una 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 algún 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 comando a continuación:

$ Echo $ Display

El retraso antes de la ejecución del comando o el script depende de la configuración de su 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 diferir la ejecución de script hasta que la sesión gráfica estuvo en vivo. Agregar cualquier retraso de sueño conduce a un retraso en la presentación de la pantalla de inicio de sesión en sí. Debido a esto, no tuve éxito en la ejecución de aplicaciones gráficas en el inicio usando RC.archivo local. Edición de RC.El local también requiere acceso a la raíz, a diferencia de todos los demás ejemplos explicados anteriormente.

Para agregar comandos / scripts a RC.Archivo local, ejecute el comando a continuación (crea un nuevo RC.archivo local si no existe):

$ sudo nano /etc /rc.local

Agregue sus comandos entre “#! /Bin/Bash "y" Salir 0 ", como se muestra a continuación:

#! /bin/bash
ruta/a/my_script.mierda
Salir 0

Hacer RC.Ejecutable de archivo local ejecutando el comando a continuación:

$ sudo chmod +x /etc /rc.local

Simplemente reinicie el script de inicio para entrar en vigencia.

Conclusión

Estos son algunos métodos que se pueden usar para ejecutar automáticamente scripts y aplicaciones en el inicio. Si está buscando ejecutar scripts que no requieren acceso raíz, recomendaría usar la aplicación GUI "Aplicaciones de inicio". Si desea ejecutar aplicaciones y scripts con acceso raíz, le sugiero que cree un servicio SystemD de nivel de sistema de sistema.