2015-05-01 6 views
5

द्वारा लॉग इन त्रुटि $ TERM और कोई-निर्दिष्ट निर्दिष्ट नहीं है" हमारे पास एक शेल स्क्रिप्ट है जो CRON द्वारा चलाया जाता है। शेल स्क्रिप्ट बदले में एक पायथन स्क्रिप्ट चलाती है जो एक FTP सर्वर से फ़ाइलें डाउनलोड करती है और फिर उन फ़ाइलों पर जावा लॉग प्रोसेसर चलाती है। प्रक्रिया ठीक है, सिवाय इसके कि अगर कोई त्रुटि नहीं है तो भी मुझे सीआरओएन ईमेल मिलते रहेंगे। कम से कम, मुझे लगता है कि कोई त्रुटि नहीं है। क्रॉन ईमेल दो लाइनों, लाइनों में से एक"ट्यूट: सीआरओएन प्रक्रिया

tput: No value for $TERM and no -T specified 

थोड़ा शोध करने के बाद, मैंने पाया कि यह $ अवधि चर की स्थापना के साथ क्या करना कुछ है, जिसमें से है। मुझे यकीन नहीं है, यह कैसे करें। किसी भी सहायता की सराहना की जाएगी। धन्यवाद!

उत्तर

2

स्क्रिप्ट में कुछ tput बाइनरी को कॉल कर रहा है। tput वर्तमान टर्मिनल निर्धारित करने के लिए $TERM चर का निरीक्षण करने का प्रयास करता है ताकि यह सही नियंत्रण अनुक्रम उत्पन्न कर सके। एक टर्मिनल नहीं है जब cron runninng है, इसलिए आपको tput से यह त्रुटि मिलती है।

आप या तो स्वयं क्रॉन जॉब के लिए एक TERM मूल्य प्रदान कर सकते हैं (संभावना dumb या कि करने के लिए कुछ इसी तरह) या (और इस संभावना बेहतर समाधान है) आप क्या tput बुला रहा है पता लगाने के लिए और है कि कॉल निकाल सकते हैं।

+0

मैं अन्य पुस्तकालयों को कॉल करता हूं, जो टिप को कॉल कर सकते हैं। मैं एक टीईआरएम मान असाइन करने का प्रयास करूंगा और देख सकता हूं कि यह – Seagull

+0

को ठीक करता है धन्यवाद! जैसा कि आपने सुझाव दिया है, मैंने बस टीईआरएम वैरिएबल को "गूंगा" पर सेट किया है, और यह काम किया! – Seagull

3

क्रॉन डिमन 'रूट' उपयोगकर्ता द्वारा अपने स्वयं के खोल में चलाया जाता है। डिफ़ॉल्ट रूप से, क्रॉन स्क्रिप्ट चलाने वाले उपयोगकर्ता को भेजे गए सिस्टम मेल को जोड़ देगा (यही कारण है कि आप प्रेषक को सिस्टम मेल में 'रूट' के रूप में देखते हैं)। 'उपयोगकर्ता' वह उपयोगकर्ता है जिसे आप क्रॉन्टाब सेट करते समय लॉग इन करते थे। मेल में कंसोल और त्रुटि संदेश होंगे। उबंटू पर, मेल फ़ाइल /var/mail/<username> पर देखने योग्य है।

यदि कोई $TERM चर सेट है, तो क्रॉन मेल फ़ाइल में tput: No value for $TERM and no -T specified त्रुटि को उत्सर्जित करेगा। इन त्रुटियों को रोकने के लिए, क्रोंटैब में TERM=dumb (या आपके सिस्टम में एक अन्य उपलब्ध टर्मिनल, जैसे xterm) का उपयोग कर $TERM वैरिएबल सेट करें। toe कमांड आपको वर्तमान सिस्टम पर टर्मिनो परिभाषा दिखाएगा। यदि आपके पास उस कमांड की कमी है, तो आप अधिकांश लिनक्स सिस्टम पर /usr/share/terminfo में कच्चे डेटा देख सकते हैं।

भले ही आपने त्रुटियों को रोक दिया है, फिर भी आप कंसोल संदेशों के साथ सिस्टम मेल संलग्न कर सकते हैं। यह फ़ाइल समय के साथ लॉग की तरह भर जाएगी, इसलिए आप इन संदेशों को रोकना चाहेंगे। क्रॉन प्रणाली मेल रोकने के लिए, का उपयोग कर MAILTO=""

तो अपने crontab कैसा लग सकता है MAILTO चर सेट:

MAILTO="" 
TERM=xterm 

* * * * * sh /path/to/myscript.sh 

आप crontab देख सकते हैं 'crontab -l साथ (उपयोगकर्ता के लिए आप के रूप में प्रवेश कर रहे हैं) '।

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