![為什麼cronjob不執行feh指令](https://rvso.com/image/1482469/%E7%82%BA%E4%BB%80%E9%BA%BCcronjob%E4%B8%8D%E5%9F%B7%E8%A1%8Cfeh%E6%8C%87%E4%BB%A4.png)
我建立了一個 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