2017-10-20 111 views
0

我想創建一個方法來隨機更改我的桌面背景。我正在使用crontab來每10分鐘處理更改。從cron運行命令沒有正常工作

在crontab

*/10 * * * * /usr/bin/feh --recursive --randomize --bg-fill 
/home/aaron/Pictures/wallpapers/minimalist 2>&1 

系統日誌

syslog:Oct 20 09:20:01 skull-nuc CRON[19895]: (aaron) CMD (/usr/bin/feh --recursive --randomize --bg-fill /home/aaron/Pictures/wallpapers/minimalist 2>&1) 
syslog:Oct 20 09:30:01 skull-nuc CRON[20449]: (aaron) CMD (/usr/bin/feh --recursive --randomize --bg-fill /home/aaron/Pictures/wallpapers/minimalist 2>&1) 

故障 -

首先,我改變了我的外殼,SH和測試的命令。有用。我在bash中測試了這個命令。有用。我允許它從cron運行,並沒有發生任何錯誤,也沒有產生錯誤。它每10分鐘運行一次,我的背景只在手動執行時發生變化。

我已經驗證

  1. 腳本單獨工作
  2. 腳本SH工作
  3. cron服務正在運行
  4. cron是運行沒有可辨別輸出命令
  5. 我不確定還有什麼要做
+0

也許告訴它運行哪個shell:'/ bin/sh/usr/bin/feh --recursive ...'還有,你怎麼知道是否有輸出?也許你應該重定向到一個文件'2>&1/some/file.log' – JNevill

+0

哦。納米。我看到'feh'是它自己的程序。殼牌應該不重要。不熟悉'feh'。你需要指定一個文件輸出到或任何東西?你怎麼知道當它通過cron運行時沒有輸出? – JNevill

+0

'feh'是否需要設置DISPLAY環境變量,以便連接到正確的X會話以更改其背景? DISPLAY可能未在cron環境中設置。 –

回答

2

cron環境通常與交互式shell中的環境不同。在這種情況下,您應該檢查DISPLAY環境變量,許多X實用程序使用它來確定要連接哪個會話。 如果未設置,feh可能會按照您描述的方式失敗。

缺少的環境變量可以直接在crontab中使用的命令行中設置,也可以編寫一個設置環境的包裝腳本,然後調用feh,然後從cron調用包裝器。