2012-11-06 20 views
7

crontab एक पायथन स्क्रिप्ट निष्पादित करने में विफल रहता है। पाइथन लिपि चलाने के लिए मैं जिस कमांड लाइन का उपयोग कर रहा हूं वह ठीक है।क्रॉन्टाब पाइथन स्क्रिप्ट को निष्पादित करने में विफल रहता है

इन कर रहे हैं समाधान मैं कोशिश की थी:

  • main.py
  • के शीर्ष पर #!/usr/bin/env python जोड़ने main.py फ़ाइल
  • service cron restart
  • - crontab
  • chmod 777 के शीर्ष पर PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin जोड़ने

मेरी crontab है:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 

*/1 * * * * python /home/python_prj/main.py 

और/var में लॉग/log/syslog है:

Nov 6 07:08:01 localhost CRON[28146]: (root) CMD (python /home/python_prj/main.py) 

और कुछ नहीं।

main.py स्क्रिप्ट python_prj के तहत अन्य मॉड्यूल से कुछ विधियों को कॉल करता है, क्या इससे कोई फर्क पड़ता है?

कोई भी मेरी मदद कर सकता है?

+0

आप की कोशिश की "/ usr/bin/env/अजगर /home/python_prj/main.py" अपने क्रॉन कमान में है? – Tjaart

+1

शायद आपकी स्क्रिप्ट किसी भी कारण से कुछ भी प्राप्त करने से पहले क्रैश हो रही है: अधिकारों की कमी, गलत cwd में निष्पादित करना? – Tjaart

+0

मैंने कोशिश की/usr/bin/env/अजगर, फिर भी प्रयास विफल – yebw

उत्तर

9

main.py स्क्रिप्ट python_prj के तहत अन्य मॉड्यूल से कुछ विधियों को कॉल करता है, क्या इससे कोई फर्क पड़ता है?

हाँ, यह करता है। सभी मॉड्यूल को रन टाइम पर खोजने योग्य होना चाहिए। आप इसे कई तरीकों से पूरा कर सकते हैं, लेकिन सबसे उपयुक्त हो सकता है कि आपके क्रोंटैब में PYTHONPATH चर सेट करें।

तुम भी crontab में mailto चर सेट करने के लिए तो आप किसी भी ट्रेस बैक के साथ ईमेल प्राप्त कर सकते हैं।

www:~# crontab -l 

DJANGO_SETTINGS_MODULE=djangocron.settings 
PATH=... 
PYTHONPATH=/home/django 
MAILTO="[email protected]" 
... 
# m h dom mon dow command 
10-50/10 * * * *    /home/django/cleanup_actions.py 
... 

(चल सफाई कार्यों हर 10 मिनट, घंटे के शीर्ष पर छोड़कर):

[अद्यतन] यहाँ मेरी crontab के शीर्ष है।

+0

मुझे समझ में नहीं आता है, मैं कमांड लाइन में "पायथन /home/python_prj/main.py" टाइप करता हूं, यह काम करता है। PythonPATH को Pythonpath पर सेट किया जाएगा या मॉड्यूल के पथ – yebw

+0

python_prj के तहत सभी मॉड्यूल अनुकूलित किए गए हैं – yebw

+0

मैंने केवल main.py आयात किए गए सभी मॉड्यूल को हटा दिया है। अभी भी कोई काम नहीं – yebw

0

स्क्रिप्ट की अनुमतियों की जांच करें। सुनिश्चित करें कि यह cron द्वारा निष्पादन योग्य है - chmod + x main.py का प्रयास करें।

3

आपकी स्क्रिप्ट में कोई भी फ़ाइल एक्सेस? और यदि हां, तो क्या आपने अपनी स्क्रिप्ट में सापेक्ष पथ (या यहां तक ​​कि: कोई स्पष्ट पथ नहीं) उपयोग किया है?
कमांडलाइन से चलाए जाने पर, वास्तविक फ़ोल्डर 'आपका पथ' है, जहां से आप स्क्रिप्ट शुरू करते हैं। क्रॉन द्वारा चलाए जाने पर, पर्यावरण चर के आधार पर 'आपका पथ' अलग हो सकता है।
इसलिए किसी भी फाइल को एक्सेस करने के लिए पूर्ण पथ का उपयोग करने का प्रयास करें।

+0

सहायक उत्तर: मैं अपनी पायथन लिपि में एक स्क्लाइट डेटाबेस तक पहुंच रहा था और पूर्ण पथ प्रदान नहीं किया था। – vrleboss

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