मैं हर मिनट में क्रेस्टब से एक अजगर खोल चलाता हूं:
* * * * * /home/udi/foo/bar.py
/home/udi/fooकुछ आवश्यक उपनिर्देशिकाएं हैं, जैसे /home/udi/foo/logऔर /home/udi/foo/config, जो /home/udi/foo/bar.pyसंदर्भित करता है।
समस्या यह है कि crontabस्क्रिप्ट को एक अलग कार्यशील निर्देशिका से चलाता है, इसलिए ./log/bar.logविफल होने की कोशिश करता है।
क्या स्क्रिप्ट को अपनी निर्देशिका में कार्यशील निर्देशिका को बदलने का एक अच्छा तरीका है? मैं एक ऐसे समाधान की कल्पना करूंगा, जो स्क्रिप्ट को स्पष्ट रूप से बताने के बजाय किसी स्क्रिप्ट स्थान के लिए काम करेगा।
संपादित करें:
os.chdir(os.path.dirname(sys.argv[0]))
सबसे कॉम्पैक्ट सुरुचिपूर्ण समाधान था। आपके उत्तर और स्पष्टीकरण के लिए धन्यवाद!
crontabयूज-केस: दोनोंsys.argv[0]और__file__असफल हो स्क्रिप्ट का उपयोग कर चलाया जाता हैexecfile(); बजायinspectसमाधान का उपयोग किया जा सकता है।