![Por que o cronjob não executa o comando feh](https://rvso.com/image/1482469/Por%20que%20o%20cronjob%20n%C3%A3o%20executa%20o%20comando%20feh.png)
Eu construo um cronjob para baixar uma nova imagem de uma fonte a cada dez minutos e defini-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, então deveria ser como eu executaria a linha - o que funciona aliás.
aqui está o roteiro
#!/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 qual plano de fundo deve ser alterado (também conhecido como eu)
*/10 * * * * /bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh
No meu syslog 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)
Responder1
Infelizmente, não é enfatizado o suficiente que os processos ambientais iniciados pelo cron get sãomuitosimples, 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 definida que seria necessária para executar qualquer aplicativo baseado em X (e, com exceção de raras exceções, tudo o que usamos é desse tipo).
Você tem que colocar algo como
export DISPLAY=:0.0
em seu roteiro e ter melhores chances.
Responder2
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