cronjobがfehコマンドを実行しないのはなぜですか

cronjobがfehコマンドを実行しないのはなぜですか

私は、ソースから 10 分ごとに新しい画像をダウンロードし、feh を使用して壁紙として設定する cronjob を構築しました。ファイルはダウンロードされますが、壁紙は変更されません。どこに問題があるのでしょうか?crontab -eユーザーとしてコマンドを実行するので、私が実行した行と同じになるはずです。ちなみに、これは機能します。

ここにスクリプトがあります

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

crontab -e背景を変更する必要があるユーザー(つまり私)向けです

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

syslogで次の行を見つけました

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) 

答え1

残念ながら、cron getによって開始された環境プロセスは、とてもシンプルで、最も重要な変数と値のみが含まれています。

#!/bin/bash

set > /tmp/myset.txt

X ベースのアプリケーションを実行するために必要な DISPLAY 変数がそこに設定されていないことがわかります (まれな例外を除いて、私たちが使用するのはその種類のものだけです)。

次のようなものを記入する必要があります

export DISPLAY=:0.0

スクリプトに追加して、より良い確率を得ましょう。

答え2

Gombai の回答を指示に従って完了するには:

を実行してenv | grep -i displayの値を確認しますDISPLAY。 おそらく:0.0、 またはです:0

それに応じて crontab を変更します。

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

関連情報