![cronjobがfehコマンドを実行しないのはなぜですか](https://rvso.com/image/1482469/cronjob%E3%81%8Cfeh%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B.png)
私は、ソースから 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