/ / क्रोन के साथ जार चलाना त्रुटि: '/ बिन / श: 1: जावा: नहीं मिला' - जावा, लिनक्स, क्रोन

क्रोन के साथ जार चलाने में त्रुटि होती है: '

मैंने अपना काम इस आदेश के साथ हर दिन 12:30 बजे चलाने के लिए निर्धारित किया है:

30 12 * * * java -jar test.jar

यह त्रुटि फेंकता है:

/bin/sh: 1: java: not found

मैंने यह आदेश चलाने की कोशिश की: java -jar test.jar खोल से और यह ठीक काम किया।

अब मैं समझ नहीं पा रहा हूं। मैं कहूंगा कि यह इसलिए हो रहा है JAVA_HOME पर्यावरण चर सेट नहीं है, लेकिन फिर यह शेल से क्यों काम करता है?

उत्तर:

उत्तर № 1 के लिए 1

त्रुटि आपको बताती है कि शेल पता नहीं लगा सका java निष्पादित करने के लिए द्विआधारी। इससे कोई लेना-देना नहीं है JAVA_HOME पर्यावरण चर, लेकिन साथ PATH वैरिएबल जिसके द्वारा परामर्श किया जाता है sh किसी भी आदेश को खोजने के लिए।

जब आप अपने कार्य को चलाते हैं cronशेल को आपके इंटरेक्टिव शेल के रूप में समान आरंभीकरण प्राप्त नहीं हुआ, जहां कमांड आपके लिए काम करता है। आप समान रूप से ऐसा पाएंगे JAVA_HOME isn "वहाँ, या तो सेट नहीं है।


उत्तर № 2 के लिए 1

आपका लॉगिन शेल वातावरण आपके क्रोनजॉब वाले से अलग है उपयोग envअपने पर्यावरण को मुद्रित करने के लिए।

दोनों पर पथ की जाँच करें - क्रोन के भीतर (कुछ इस तरह) 30 08 * * * env > ~/cronenv। अपने लॉगिन शेल में बस उपयोग करें env। फिर पाथ चर की तुलना करें। जैसा कि @Marko Topolnik ने पहले ही अपने PATH को क्रोन के भीतर बताया है, जाहिर है कि इसमें आपका java निष्पादक नहीं है।


जवाब के लिए 0 № 3

आप अपने crontab फ़ाइल में एक पंक्ति जोड़ सकते हैं जिसमें वह पथ है जिसकी आपको आवश्यकता है:

# m h  dom mon dow   command
PATH=.....

आपको शायद कुछ इस तरह की आवश्यकता है:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

आप भी उपयोग कर सकते हैं echo $PATH यह जानने के लिए कि आपके नियमित वातावरण में क्या है और बस उस मूल्य का उपयोग करें।