Construyo un cronjob para descargar una nueva imagen de una fuente cada diez minutos y la configuro como fondo de pantalla usando feh. El archivo se descarga pero el fondo de pantalla no cambia. ¿Dónde está el problema? crontab -e
ejecuta comandos como usuario, por lo que debería ser como ejecutaría la línea, lo cual funciona por cierto.
aquí está el guión
#!/bin/sh
#Filename
file="space-"$(date +%x_%H:%M:%S)
#save it
wget http://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/full_disk_ahi_true_color.jpg -O /home/tim/Bilder/Wallpaper/$file -o /dev/null
#set background
feh --bg-max /home/tim/Bilder/Wallpaper/$file
Esto es crontab -e
para el usuario qué fondo debe cambiarse (también conocido como yo)
*/10 * * * * /bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh
En mi syslog encontré estas líneas
Jan 31 21:40:01 LinuxMint CRON[18209]: (tim) CMD (/bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh)
Jan 31 21:40:11 LinuxMint CRON[18204]: (CRON) info (No MTA installed, discarding output)
Respuesta1
Desafortunadamente, no se enfatiza lo suficiente que los procesos ambientales iniciados por cron get sonmuysimple, contiene sólo las variables y valores más importantes. Puede comprobarlo ejecutando un script de shell que contenga sólo
#!/bin/bash
set > /tmp/myset.txt
Verá que no hay ninguna variable DISPLAY configurada allí que sea necesaria para ejecutar cualquier aplicación basada en X (y, salvo raras excepciones, todo lo que usamos es ese tipo).
Tienes que poner algo como
export DISPLAY=:0.0
en su guión y tener mejores probabilidades.
Respuesta2
Para completar la respuesta de Gombai con instrucciones:
Ejecute env | grep -i display
y verifique el valor de DISPLAY
. Probablemente sea :0.0
, o :0
.
Modifique su crontab en consecuencia:
*/10 * * * * DISPLAY=:0 /bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh