為什麼cronjob不執行feh指令

為什麼cronjob不執行feh指令

我建立了一個 cronjob,每十分鐘從來源下載一張新圖片,並使用 feh 將其設定為壁紙。文件已下載,但壁紙未更改。哪裡有問題?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

在我的系統日誌中我發現了這些行

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 啟動的環境進程是非常很簡單,它只包含最重要的變數和值。您可以透過執行僅包含以下內容的 shell 腳本來檢查它:

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

相關內容