Por que o cronjob não executa o comando feh?

3

Eu construo um cronjob para baixar uma nova imagem de uma fonte a cada dez minutos e configurá-la como papel de parede usando feh. O arquivo é baixado, mas o papel de parede não muda. Onde está o problema? crontab -e executa comandos como o usuário, portanto, deve ser como se eu fosse executar a linha - o que funciona em btw.

aqui está o 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

Aqui está crontab -e para o usuário que plano de fundo deve ser alterado (também conhecido por mim)

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

No meu syslog eu encontrei estas linhas

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) 
    
por globus243 31.01.2016 / 21:50

2 respostas

3

Infelizmente, não é suficientemente enfatizado que os processos do ambiente iniciados pelo cron get são muito simples, contém apenas as variáveis e valores mais vitais. Você pode verificar isso executando um script de shell que contém apenas

#!/bin/bash

set > /tmp/myset.txt

Você verá que não há nenhuma variável DISPLAY configurada lá que seja necessária para executar quaisquer aplicativos baseados em X (e, exceto raras exceções, tudo que usamos é esse tipo).

Você tem que colocar algo como

export DISPLAY=:0.0

em seu script e ter melhores chances.

    
por 11.02.2016 / 15:23
1

Para completar a resposta de Gombai com instruções:

Execute env | grep -i display e verifique o valor de DISPLAY . É provavelmente :0.0 ou :0 .

Modifique seu crontab de acordo:

*/10 * * * * DISPLAY=:0 /bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh
    
por 08.09.2016 / 13:03