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?
Pruebe cronmaker.com, allí puede hacer expresiones cron y ponerlo con crontab -e
Somos Borg
2
¿La imagen cambia incluso cada 5 minutos? Intente usar un intervalo que cree una carga menos innecesaria en el servidor de destino. O asegúrese de descargar solo si el archivo realmente ha cambiado.
til_b
1
Por cierto, ¿cuál es la url para los fondos del espacio?
bohdan_trotsenko
Respuestas:
14
La opción perezosa
Si desea la manera fácil y evite tener que averiguar qué variable de entorno establecer:
Asegúrese de que su secuencia de comandos incluya el shebang
Hazlo ejecutable
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"
Explicación
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. cronsin embargo, ejecuta su script con un conjunto limitado de variables de entorno.
Dado que su script, sin duda, utiliza el gsettingscomando:
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.
Información adicional; alternativamente
Al leer esta publicación , y de las experiencias del pasado, estoy bastante seguro de que la DBUS_SESSION_BUS_ADDRESSvariable de entorno debe establecerse.
Para hacerlo, agregue la siguiente sección al comienzo de su secuencia de comandos (debajo del shebang):
@AleksanderMahnyov De nada. Me alegro de que funcione :)
Jacob Vlijm
2
Es mucho mejor usar un trabajo cron.
Luka Ramishvili
1
@LukaRamishvili Gracias por el comentario. Sin embargo: a. ¿Y por qué es eso? un comando de suspensión no significa nada para su sistema. si. Incluso incluí la opción.
Jacob Vlijm
1
De lo contrario, una buena investigación sobre las variables de sesión de gnome, ayudaría mucho al OP, ya que eso sería necesario de cualquier manera.
Luka Ramishvili
2
Acabo de mirar: cpu 0.0%¿De qué impuesto estamos hablando?
Jacob Vlijm
24
Ponlo en tu crontab.
Abre tu cronmesa 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 DISPLAYal entorno del script:
*/5**** DISPLAY=:0/path/to/script.sh
Reemplace :0con su actual DISPLAY(se puede encontrar en una echo $DISPLAYsesión interactiva).
Si es necesario, también puede agregar la XAUTHORITYvariable de entorno:
No estoy seguro si funciona con variables de entorno limitadas de cron, pero veamos si OP menciona que funciona :)
Jacob Vlijm
1
@AleksanderMahnyov Por favor edite su pregunta para agregar el script, difícil de decir sin ver el contenido ... DISPLAYXAUTHORITY
posiblemente
1
@Kartagis Cron no puede manejar segundos, también estás tratando de hacerlo durante horas, lo que sigue siendo sintácticamente incorrecto ..
heemayl
2
Me encanta este método en lugar del "método perezoso", porque sabía sobre cron, pero necesitaba un curso de actualización. Esto es exactamente lo que hice, muchas gracias! :)
Respuestas:
La opción perezosa
Si desea la manera fácil y evite tener que averiguar qué variable de entorno establecer:
Agregue lo siguiente a las Aplicaciones de inicio:
Tablero> Aplicaciones de inicio> Agregar. Agrega el comando:
Explicación
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: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.
Información adicional; alternativamente
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):
Entonces deberías poder ejecutarlo con éxito
cron
.Sin embargo, podría muy bien guardar el ajetreo y elegir la opción perezosa.
fuente
cpu 0.0%
¿De qué impuesto estamos hablando?Ponlo en tu
crontab
.Abre tu
cron
mesa por:Ahora agregue:
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:Reemplace
:0
con su actualDISPLAY
(se puede encontrar en unaecho $DISPLAY
sesión interactiva).Si es necesario, también puede agregar la
XAUTHORITY
variable de entorno:Nuevamente puedes encontrar el valor por
echo $XAUTHORITY
.fuente
DISPLAY
XAUTHORITY