Tengo un script .sh que descarga una foto del servidor del satélite japonés y la configura como imagen de fondo. Lo puse en la lista de inicio, pero ¿cómo lo ejecuto cada 5 minutos automáticamente?
Tengo un script .sh que descarga una foto del servidor del satélite japonés y la configura como imagen de fondo. Lo puse en la lista de inicio, pero ¿cómo lo ejecuto cada 5 minutos automáticamente?
Respuestas:
Si desea la manera fácil y evite tener que averiguar qué variable de entorno establecer:
Agregue lo siguiente a las Aplicaciones de inicio:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
Tablero> Aplicaciones de inicio> Agregar. Agrega el comando:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
Si ejecuta el script desde su propio entorno (por ejemplo, desde una ventana de terminal o desde aplicaciones de inicio), se establecerán varias variables de entorno. cron
sin embargo, ejecuta su script con un conjunto limitado de variables de entorno.
Dado que su script, sin duda, utiliza el gsettings
comando:
gsettings get org.gnome.desktop.background picture-uri <wallpaper>
para configurar el fondo de pantalla, es casi seguro que el comando se romperá cuando se ejecute cron
.
La desventaja de "la solución perezosa" es puramente teórica. Un comando que duerme prácticamente continuamente no significa nada para su sistema.
Al leer esta publicación , y de las experiencias del pasado, estoy bastante seguro de que la DBUS_SESSION_BUS_ADDRESS
variable de entorno debe establecerse.
Para hacerlo, agregue la siguiente sección al comienzo de su secuencia de comandos (debajo del shebang):
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
Entonces deberías poder ejecutarlo con éxito cron
.
Sin embargo, podría muy bien guardar el ajetreo y elegir la opción perezosa.
cpu 0.0%
¿De qué impuesto estamos hablando?
Ponlo en tu crontab
.
Abre tu cron
mesa por:
crontab -e
Ahora agregue:
*/5 * * * * /path/to/script.sh
No olvide hacer el script ejecutable de antemano.
Como su script depende de X, probablemente sea una buena idea agregarlo DISPLAY
al entorno del script:
*/5 * * * * DISPLAY=:0 /path/to/script.sh
Reemplace :0
con su actual DISPLAY
(se puede encontrar en una echo $DISPLAY
sesión interactiva).
Si es necesario, también puede agregar la XAUTHORITY
variable de entorno:
*/5 * * * * DISPLAY=:0 XAUTHORITY="~/.Xauthority" /path/to/script.sh
Nuevamente puedes encontrar el valor por echo $XAUTHORITY
.
DISPLAY
XAUTHORITY