Pourquoi cronjob n'exécute-t-il pas la commande feh

3

Je construis un travail cron pour télécharger une nouvelle image d’une source toutes les dix minutes et la définit comme fond d’écran à l’aide de feh. Le fichier est téléchargé mais le fond d'écran ne change pas. Où est le problème? crontab -eexécute les commandes en tant qu'utilisateur, il devrait donc être comme si je courais la ligne - ce qui fonctionne d'ailleurs.

voici le script

#!/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

Voici crontab -epour l'utilisateur quel fond devrait être changé (alias moi)

*/10 * * * * /bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh

Dans mon syslog, j'ai trouvé ces lignes

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) 
globus243
la source

Réponses:

3

Malheureusement, il n'est pas suffisamment souligné que les processus d'environnement démarrés par cron get sont très simples, il ne contient que les variables et les valeurs les plus essentielles. Vous pouvez le vérifier en exécutant un script shell qui ne contient que

#!/bin/bash

set > /tmp/myset.txt

Vous verrez qu'il n'y a pas de variable DISPLAY définie ici pour exécuter des applications basées sur X (et sauf quelques rares exceptions, tout ce que nous utilisons est de ce type).

Vous devez mettre quelque chose comme

export DISPLAY=:0.0

dans votre script et d'avoir de meilleures chances.

Gombai Sándor
la source
1

Pour compléter la réponse de Gombai avec les instructions suivantes:

Exécuter env | grep -i displayet vérifier la valeur de DISPLAY. C'est probablement :0.0, ou :0.

Modifiez votre crontab en conséquence:

*/10 * * * * DISPLAY=:0 /bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh
Gauthier
la source