Ejecutar un script después de que se haya cargado la interfaz gráfica de usuario

Ejecutar un script después de que se haya cargado la interfaz gráfica de usuario

Sé cómo ejecutar un programa al arrancar, al iniciar sesión (Sistema > Preferencias > Aplicaciones de inicio) o al abrir un shell (.bashrc). Yo también leí"¿Ejecutar el script después de cargar el escritorio?". Lo que me di cuenta es que cada aplicación agregada a las Aplicaciones de inicio extiende el tiempo hasta que el escritorio se vuelve utilizable. Así que estoy buscando una manera de iniciar todo lo "bueno" desde un script (lo hice funcionar) que se ejecuta después de finalizar el inicio normal.

No tengo del todo claro cómo llegar. ¿Usaría un segundo script que llame al primero con & (para que se ejecute en segundo plano) y agregaría una espera (unos segundos|evento específico) al primero?

Respuesta1

Simplemente llame sleepal comienzo del guión de "lo que es bueno tener". Eso no debería bloquear la carga del escritorio. También puedes acelerar las cosas en hardware multinúcleo poniendo en segundo plano cada proceso.

p.ej

sleep 20s
<something that takes a long time> &
<this can now start immediately> &
...

Los dos comandos se ejecutarán en paralelo, pero esperarán 20 segundos antes de comenzar. Puede utilizar "m", "h" o "d" para especificar minutos, horas o días si lo que tenía en mente no es unos segundos. =)

Respuesta2

Si va a iniciar algo costoso, ejecútelo en segundo plano con un retraso. Por ejemplo

after 20s find-all-the-dirty-dishes &
after 1m find ~ -name '*~' -mtime +30 -exec rm '{}' ';'

donde tendrás que implementarte aftertú mismo pero puede ser algo como esto

#!/bin/sh
sleep "$1"
shift
exec "$@"

información relacionada