मैं क्रॉन से Django प्रबंधन कमांड चलाने की कोशिश कर रहा हूं। मैं अपने प्रोजेक्ट को सैंडबॉक्स रखने के लिए वर्चुअलएन्व का उपयोग कर रहा हूं।क्रॉन और वर्चुअलनेव
मैं से प्रबंधन आदेशों चल virtualenv के भीतर की तरह चलता है कि यहाँ और कहीं और उदाहरण देखा है:
0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg
हालांकि, भले ही syslog एक प्रविष्टि जब काम शुरू कर दिया जाना चाहिए था पता चलता है, इस कार्य को वास्तव में कभी रन (स्क्रिप्ट के लिए लॉग फ़ाइल खाली है)। यदि मैं खोल से मैन्युअल रूप से लाइन चलाता हूं, तो यह अपेक्षा के अनुसार काम करता है।
एक ही रास्ता मैं वर्तमान में क्रॉन के माध्यम से चलाने के लिए आदेश प्राप्त कर सकते हैं, आदेशों को तोड़ने और उन्हें एक गूंगा बैश आवरण लिपि में डाल करने के लिए है:
#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg
संपादित करें:
आर्स आया आदेशों के एक कामकाजी संयोजन के साथ:
0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg
कम से कम मेरे मामले में, वर्चुअलनेव के लिए सक्रिय स्क्रिप्ट का आह्वान करने से कुछ भी नहीं हुआ। यह शो के साथ काम करता है।
एक अंतर यह है कि मुझे लगता है कि स्क्रिप्ट के साथ/घर/उपयोगकर्ता/वर्तमान कार्यशील निर्देशिका के रूप में परियोजना manage.py चलेंगे है। आपका क्रॉन कमांड आपके होम निर्देशिका के साथ cwd के रूप में चलाया जाएगा। शायद लॉग फ़ाइल वहाँ है? – rettops
दरअसल लॉग पथ बिल्कुल परिभाषित किया गया है, यह केवल स्क्रिप्ट नहीं चल रहा है क्योंकि इसे अभी तक बनाया/जोड़ा नहीं गया है। –
क्रॉन मुद्दों के लिए एक त्वरित और गंदे समाधान आपके पर्यावरण को डंप करना है (जिसमें आपका आदेश निष्पादित रूप से काम कर रहा है) 'env' और' export' उन सभी को एक बैश स्क्रिप्ट रैपर में जिसे आप क्रोंटैब से कॉल करते हैं। – jberryman