मेरे पास एक पायथन एप्लिकेशन है जो पैरामीटर के लिए कमांड लाइन को पार्स करने के लिए getopt() का उपयोग करता है। यह एक इंटरेक्टिव बैश खोल में ठीक काम करता है, या कमांड लाइन से बुलाया जाने वाला एक बैश स्क्रिप्ट में, बिट क्रॉन के माध्यम से बैश खोल स्क्रिप्ट के भीतर से कॉल होने पर इसे निष्पादित नहीं किया जाएगा। मैं फेडोरा 15.क्रॉन नौकरी में एक पायथन लिपि में बैश पैरामीटर कैसे पास करें?
जब एक क्रॉन जॉब के रूप में बुलाया आवेदन में विफल रहता है उपयोग कर रहा हूँ,/var में निम्न त्रुटि जारी करने/log/संदेश:
myscript.py: abrt: detected unhandled Python exception in myscript.py
ऐसा लगता है कि आदेश पंक्ति पैरामीटर नहीं कर रहे ' टी पाइथन लिपि में ठीक से पारित किया जा रहा है।
उदाहरण के लिए, निम्न आदेश पंक्ति मंगलाचरण ठीक से काम करता है, इनपुट फ़ाइल नाम के लिए "input.txt" स्थापित करने और उनकी इच्छा के मानों को "लॉग ऑन" और "टाइमर" झंडे की स्थापना:
python myscript.py -i input.txt --log --timer
जब मैं कमांड लाइन पर एक बैश स्क्रिप्ट के माध्यम से प्रोग्राम को आमंत्रित करने का प्रयास करें, बैश स्क्रिप्ट ठीक काम करती है। लेकिन जब मैं क्रॉन के माध्यम से बैश स्क्रिप्ट चलाने का प्रयास करता हूं, तो उपरोक्त त्रुटि के साथ निष्पादन विफल हो जाता है।
मुझे यह निर्धारित करने के लिए नुकसान हुआ है कि क्यों शैल स्क्रिप्ट क्रॉन के माध्यम से ठीक से निष्पादित करने में विफल रहता है। मैं क्रॉन जॉब के लिए इस्तेमाल किया बैश स्क्रिप्ट के भीतर से पूरा पथ नाम का उपयोग कर रहा है, इसलिए पर्यावरण पथ एक मुद्दा नहीं होना चाहिए:
/usr/bin/python /path/to/myscript.py -i /path/to/input.txt --log --timer
मैं सोच रहा हूँ कि इस वाक्य रचना, जब एक bash स्क्रिप्ट में प्रयोग किया बुलाया क्रॉन के माध्यम से, myscript.py के बजाय, स्क्रिप्ट के पैरामीटर को पाइथन में पास कर सकता है।
किसी भी मदद की सराहना की जाएगी!
था कभी नहीं किया है लोगों को चलने वाली स्क्रिप्ट और कार्यक्रमों के साथ समस्या है जब बुद्धि से हिन 'क्रॉन (8) ', त्रुटियां अक्सर पर्यावरण चर के गायब होने से आती हैं। इसलिए मुझे विश्वास नहीं है कि यह पैरामीटर पार्सिंग है। उस अनचाहे अपवाद पर अधिक जानकारी प्राप्त करने का प्रयास करें: अपनी संपूर्ण स्क्रिप्ट को 'try'/'catch' ब्लॉक के साथ लपेटें और डिस्क के अपवाद के बारे में विवरण सहेजें। – sarnold
शैल के माध्यम से पायथन निष्पादित करने का प्रयास करें, कुछ '/ bin/bash -c "/ path/to/python/path/to/script जैसे कुछ ..."यह मदद कर सकता है, लेकिन यह सिर्फ एक अनुमान है - मुझे तब तक एक ही समस्या थी जब तक मुझे एहसास हुआ कि क्रॉन इसका उपयोग निष्पादित करने के लिए/bin/sh का उपयोग करता है। – cji