2010-04-26 11 views
5

मेरे पास एक पायथन स्क्रिप्ट है जो किसी दिए गए फ़ोल्डर में एक यादृच्छिक चित्र के लिए gconf के माध्यम से डेस्कटॉप वॉलपेपर को सही ढंग से सेट करती है।उपयोगकर्ता क्रॉन्टाब + पायथन + यादृच्छिक वॉलपेपर = काम नहीं कर रहा है?

मैं तो मेरे 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

+0

हाँ और हाँ, जैसा कि मैंने कहा था, स्क्रिप्ट क्रॉन कॉलिंग के बाहर काम करता है जैसे कि ~/bin/change-background.py और पायथन ~/bin/change-background.py – Bolster

उत्तर

6

आपकी स्क्रिप्ट DISPLAY पर्यावरण चर पर निर्भर करती है, जो कि जब आप X सत्र में खोल से स्क्रिप्ट निष्पादित करते हैं, तब सेट होता है, लेकिन जब स्क्रिप्ट क्रॉन से चलती है तो अनसेट करें।

+2

कृपया उत्तर के रूप में अपना उत्तर दें:) – Bolster

+4

@ एंड्रयू मैंने हालांकि किया था। आपका प्रश्न "कोई विचार है?", मैंने आपको प्रस्तुत की गई सीमित जानकारी के मुताबिक सबसे संभावित कारण दिया है। मैंने सही ढंग से अनुमान लगाया है कि समस्या क्रॉन या gconf के साथ नहीं है, यह एक विशेष पर्यावरण चर के साथ है। यह देखते हुए कि आप स्पष्ट रूप से * NIX और पायथन के साथ धाराप्रवाह हैं, मुझे आपको पर्यावरण चर सेट करने के लिए सिखाए जाने की आवश्यकता महसूस नहीं हुई (रिकॉर्ड के लिए, यह 'os.environ ["DISPLAY"] = ...' पायथन में)। – Bolo

2

बोलो के अवलोकन के अनुसार, मैं DISPLAY में स्क्रिप्ट या क्रोंटब में निर्माण के बारे में भूल गया था।

सबसे आसान समाधान env DISPLAY=:0.0

तो

के साथ crontab पहले जोड़ें करने के लिए है:

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

फिर उसका जवाब स्वीकार करें? – manifest

+0

मैं 44 घंटों में :) – Bolster

+0

एरर, जब तक कि कुछ टिप्पणी हटा दी गई हो: * उसका *, नहीं * यह *, इसलिए 44 घंटे प्रतीक्षा करने की आवश्यकता नहीं है? (लेकिन ठीक है, यह [मेटा पर एक चर्चा] है (http://meta.stackexchange.com/questions/47906/etiquette-for-dealing-with-hint-answers)।) – Arjan

2

प्रदर्शन वातावरण चर सेट करने के लिए, मैं इसे सीधे crontab जाते थे। साथ ही, मैं स्क्रिप्ट निष्पादन योग्य बनाउंगा और इसे एक उचित शीर्षलेख (#!/usr/bin/env python) दे दूंगा ताकि इसे सीधे निष्पादित किया जा सके। इसके अतिरिक्त, आप क्रॉन्टाब चलाते समय पीडब्लूडी को होम पर सेट कर सकते हैं।

मेरे crontab इस प्रकार दिखाई देगा:

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

आप भी पथ (प्रदर्शन के रूप में एक ही तरीके से) सेट कर सकते हैं ताकि bin/ भी आवश्यकता नहीं है।


crontab में पर्यावरण की स्थापना के लिए मुख्य पकड़ लिया है कि मूल्यों हैं चर-अंतर्वेशित नहीं। उदाहरण के लिए, यह अपेक्षित परिणाम नहीं देता है:

PATH=$HOME/bin:$PATH 
+0

स्क्रिप्ट निष्पादन योग्य है, उचित हेडर है, और पथ सही ढंग से सेट है (मेरे पास ~/bin में बहुत सी चीजें हैं) लेकिन मुझे बस क्या चल रहा है, इसकी स्पष्ट जानकारी पसंद है, इसलिए क्रोंटैब में 'निर्यात DISPLAY: 0.0' इनलाइन होना मुझे याद दिलाएं कि 6 महीने के समय में क्यों: डी आपकी रुचि के लिए धन्यवाद। – Bolster

संबंधित मुद्दे