मैं क्रोन से एक Django प्रबंधन कमांड चलाने की कोशिश कर रहा हूं। मैं अपने प्रोजेक्ट को सैंडबॉक्स करने के लिए virtualenv का उपयोग कर रहा हूं।
मैंने यहाँ और अन्य जगहों के उदाहरण देखे हैं जो कि 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
संपादित करें:
ars आदेशों के एक संयोजन के साथ आया:
0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg
कम से कम मेरे मामले में, virtualenv के लिए सक्रिय स्क्रिप्ट को लागू करने से कुछ नहीं हुआ। यह काम करता है, इसलिए शो के साथ।
env
और export
उन सभी को एक बैश स्क्रिप्ट रैपर में आप क्रॉस्टब से कॉल करते हैं।