2010-04-26 58 views
5

我有一個python腳本,通過gconf將桌面牆紙正確設置爲給定文件夾中的隨機圖片。用戶Crontab + Python +隨機壁紙=不工作?

然後我在我的crontab

* * * * * python /home/bolster/bin/change-background.py

和Syslog以下條目正確地報告執行

Apr 26 14:11:01 bolster-desktop CRON[9751]: (bolster) CMD (python /home/bolster/bin/change-background.py) 
Apr 26 14:12:01 bolster-desktop CRON[9836]: (bolster) CMD (python /home/bolster/bin/change-background.py) 
Apr 26 14:13:01 bolster-desktop CRON[9860]: (bolster) CMD (python /home/bolster/bin/change-background.py) 
Apr 26 14:14:01 bolster-desktop CRON[9905]: (bolster) CMD (python /home/bolster/bin/change-background.py) 
Apr 26 14:15:01 bolster-desktop CRON[9948]: (bolster) CMD (python /home/bolster/bin/change-background.py) 
Apr 26 14:16:01 bolster-desktop CRON[9983]: (bolster) CMD (python /home/bolster/bin/change-background.py) 

但是,沒有desktopy changey,任何想法?

+0

您是否看到gconf-editor中的值更改?如果您從gconf-editor中設置值,壁紙是否會更改? – Thomas 2010-04-26 13:24:40

+0

是的,是的,正如我所說,腳本工程以外的cron調用只是〜/ bin/change-background.py和python〜/ bin/change-background.py – Bolster 2010-04-26 13:28:29

回答

6

腳本依賴於DISPLAY環境變量,該變量在X會話中從shell執行腳本時設置,但在腳本從cron運行時取消設置。

+2

請以答案的形式說明您的答案: ) – Bolster 2010-04-26 13:31:57

+4

@安德魯我雖然我做到了。你的問題是「任何想法?」,考慮到你提供的信息有限,我給了你最可能的原因。我已經正確地猜測出問題不在於cron或gconf,而是在於一個特定的環境變量。看到你顯然熟練使用* NIX和Python,我不覺得有必要教你如何設置環境變量(對於記錄來說,它是'os.environ [「DISPLAY」] = ...'在Python中)。 – Bolo 2010-04-26 21:15:51

2

按照Bolo的觀察,我忘記了將DISPLAY構建到腳本或crontab中。

最簡單的方法是用env DISPLAY=:0.0

所以預先設置的crontab:

* * * * * env DISPLAY=:0.0 python /home/bolster/bin/change-background.py 
+1

然後接受他的回答? – manifest 2010-04-26 14:15:48

+0

我會在44小時內:) – Bolster 2010-04-26 18:33:50

+0

錯誤,除非刪除了一些評論:*他*,不*這*,所以不需要等待44小時? (但是,這是[關於Meta的討論](http://meta.stackexchange.com/questions/47906/etiquette-for-dealing-with-hint-answers)。) – Arjan 2010-04-26 19:19:18

2

設置顯示環境變量,我會把它直接在crontab。另外,我會讓腳本可執行併爲其提供一個適當的標題(#!/usr/bin/env python),以便它可以直接執行。此外,您可以依靠在crontab運行時將PWD設置爲HOME。

我的crontab是這樣的:

DISPLAY=:0.0 
* * * * * bin/change-background.py 

您還可以設置PATH(以相同的方式顯示),因此甚至沒有必要的bin/


用於在crontab設置環境的主要小問題,就是值可變內插。例如,這不會給出預期的結果:

PATH=$HOME/bin:$PATH 
+0

腳本是可執行文件,具有正確的頭文件,並且路徑設置正確(我在〜/ bin中有很多東西),但我只是想明確說明發生了什麼,因此在crontab中內嵌'export DISPLAY:0.0'將會提醒我爲什麼在6個月內出現:D 感謝您的關注。 – Bolster 2010-04-26 18:33:26