Crontab काम नहीं कर रहा है, और कुछ और crontab सवाल

मैं crontab का उपयोग कर हर मिनट एक स्क्रिप्ट चलाने की कोशिश कर रहा हूं लेकिन यह नहीं चलेगा। इसके लिए मैंने जो कोड डाला है वह है:

* * * * * ~/me/folder/myScript.sh

मैंने सोचा कि गंतव्य गलत है इसलिए मैंने भी कोशिश की:

* * * * * home/me/folder/myScript.sh

मैं बैश के साथ बहुत नया हूं इसलिए मैं थोड़ा उलझन में हूं कि समस्या क्या हो सकती है। मैंने यह सुनिश्चित करने के लिए pgrep cron आज़माया है कि मेरे पास क्रॉन चल रहा था।

0
जोड़ा संपादित
विचारों: 1
जब आप शेल प्रॉम्प्ट से कमांड चलाते हैं तो क्या होता है?
जोड़ा लेखक Keith Thompson, स्रोत
यह समस्या नहीं है, मैंने सुनिश्चित किया है कि यह निष्पादन योग्य है
जोड़ा लेखक Benji, स्रोत
स्क्रिप्ट चलती है क्योंकि इसे करना चाहिए।
जोड़ा लेखक Benji, स्रोत

2 उत्तर

आपकी क्रॉन्टाब चलाने पर वर्तमान निर्देशिका आपकी होम निर्देशिका है, इसलिए आपको इसके लिए एक स्पष्ट पथ लगाने की आवश्यकता नहीं है।

* * * * * folder1/folder2/folder3/myScript.sh >>myScript.log 2>&1

लेकिन अगर आप इसे चाहते हैं, तो आपको इसे एक पूर्ण पथ बनाना होगा:

* * * * * /home/me/folder1/folder2/folder3/myScript.sh >>/home/me/myScript.log 2>&1
0
जोड़ा
क्या इसके बारे में CRON से syslog में कोई संदेश हैं?
जोड़ा लेखक Barmar, स्रोत
grep CRON/var/log/syslog
जोड़ा लेखक Barmar, स्रोत
तो आपकी स्क्रिप्ट चल रही है, लेकिन इसमें एक त्रुटि हो रही है। आम तौर पर cron आपको आउटपुट मेल करेगा, लेकिन चूंकि मेल आपकी मशीन पर कॉन्फ़िगर नहीं है, यह ऐसा करने में सक्षम नहीं है। मैं यह दिखाने के लिए अपना उत्तर अपडेट करूंगा कि आप आउटपुट को फ़ाइल में कैसे डाल सकते हैं।
जोड़ा लेखक Barmar, स्रोत
यदि स्क्रिप्ट काम करता है जब आप इसे इंटरैक्टिव रूप से चलाते हैं, तो त्रुटि शायद इसलिए होती है क्योंकि यह आपके .profile में सेट किए गए कुछ पर्यावरण चर पर निर्भर करता है। यह क्रॉन नौकरियों को चलाने पर निष्पादित नहीं किया जाता है।
जोड़ा लेखक Barmar, स्रोत
आप / से पहले / से पहले अनुपलब्ध हैं। क्या आप पूर्ण और सापेक्ष पथनामों के बीच अंतर को समझते हैं?
जोड़ा लेखक Barmar, स्रोत
यदि आप ls /home/user/folder1/myScript.sh टाइप करते हैं तो क्या होता है? सुनिश्चित करें कि आप crontab में जो भी डालते हैं उसे बिल्कुल कॉपी करें।
जोड़ा लेखक Barmar, स्रोत
यह किसी भी पथ में काम नहीं कर रहा है
जोड़ा लेखक Benji, स्रोत
मैं इसे कहां देख सकता हूं? मुझे अपना crontab -e अपडेट करने के बाद कोई त्रुटि नहीं मिली है, यह कहता है कि इसे अपडेट किया गया है।
जोड़ा लेखक Benji, स्रोत
ये दो संदेश हर मिनट प्रदर्शित होते हैं: 22 नवंबर 18:03:01 उपयोगकर्ता CRON [22352]: (उपयोगकर्ता) सीएमडी (घर/उपयोगकर्ता/फ़ोल्डर 1/फ़ोल्डर 2/फ़ोल्डर 3/myScript.sh) 22 नवंबर 18:03:01 उपयोगकर्ता CRON [ 22351]: (सीआरओएन) जानकारी (कोई एमटीए स्थापित नहीं, आउटपुट को छोड़कर)
जोड़ा लेखक Benji, स्रोत
/bin/sh: 1: घर/उपयोगकर्ता/फ़ोल्डर 1/myScript.sh: नहीं मिला यह लॉग में मिला त्रुटि संदेश है। मैंने इसे थोड़ा आसान बनाने के लिए फ़ोल्डर बदल दिया।
जोड़ा लेखक Benji, स्रोत
मैंने देखा कि साथ ही मैंने इसे ठीक किया है, लेकिन यह अभी भी एक ही समस्या को प्रदर्शित कर रहा है, दोनों syslog और जेनरेट किए गए लॉग में
जोड़ा लेखक Benji, स्रोत
मुझे हरे रंग में एक संदेश मिलता है /home/user/folder1/myScript.sh किसी कारण से मेरी लॉग फ़ाइल अब कोई त्रुटि संदेश प्रदर्शित नहीं कर रही है, तो मुझे लगता है कि रास्ते पर एक कदम
जोड़ा लेखक Benji, स्रोत

यह बताने में थोड़ा मुश्किल है क्योंकि आप अनामित उदाहरणों का उपयोग कर रहे हैं, लेकिन मुझे लगता है कि आप अपनी स्क्रिप्ट के लिए गलत पथ का उपयोग कर रहे हैं। आम तौर पर, पथ 3 प्रारूपों में से एक में होंगे:

  • Absolute paths: these are distinguished by starting with "/", and the path is specified starting from the root of the system volume. If I'm understanding your example properly, your script is at the absolute path "/home/me/folder1/folder2/folder3/myScript.sh".

  • Home-based paths: these start with "~", optionally followed by a username. Assuming your username is "me" and your home directory is "/home/me", you could specify your script with either "~/folder1/folder2/folder3/myScript.sh" or "~me/folder1/folder2/folder3/myScript.sh".

    The path you used, "~/me/folder1/folder2/folder3/myScript.sh", is equivalent to "/home/me/me/folder1/folder2/folder3/myScript.sh". Note the "me/me/" bit -- that's because of the "/" between "~" and "me".

    (BTW, it's not important here, but these are not real paths; they're a shorthand the shell supports, so they can be used only in places where the command is interpreted by a shell or something similar.)

  • Relative paths: these don't start with either "/" or "~", and the path is specified relative to the process's current working directory.

    In a cron job, the working directory is (at least initially) set to the user's home folder. Thus, when you specify the path "home/me/folder1/folder2/folder3/myScript.sh", it's equivalent to the absolute path "/home/me/home/me/folder1/folder2/folder3/myScript.sh".

तो शुद्ध परिणाम यह है कि आप निम्न में से किसी भी पथ का उपयोग करने में सक्षम होना चाहिए:

/home/me/folder1/folder2/folder3/myScript.sh
~/folder1/folder2/folder3/myScript.sh
~me/folder1/folder2/folder3/myScript.sh
folder1/folder2/folder3/myScript.sh
0
जोड़ा
मैंने उन सभी की कोशिश की है और मुझे अभी भी syslog में एक ही त्रुटि मिलती है और स्क्रिप्ट अभी भी हर मिनट नहीं चल रही है।
जोड़ा लेखक Benji, स्रोत