हालांकि बहुत दुर्लभ है, कभी-कभी क्रॉन ठीक से काम करना बंद कर देता है भले ही सेवा चल रही हो । यहां यह सत्यापित करने का तरीका बताया गया है कि क्रोनड चल रहा है और सेवा को रोकें/शुरू करें ।
लिनक्स पर:
service crond statusservice crond stopservice crond start
उबंटू और अन्य डेबियन-आधारित प्रणालियों पर:
service cron statusservice cron stopservice cron start
क्रोनटैब प्रविष्टि के लिए सिंटैक्स सही दिखता है । वास्तव में, यदि आप अपने क्रोनटैब का उपयोग करके संपादित करते हैं"crontab -e"(जैसा कि आपको करना चाहिए), यदि आप किसी भी तरह से वाक्यात्मक रूप से अमान्य क्रोनटैब प्रविष्टि निर्दिष्ट करते हैं तो आपको एक त्रुटि मिलेगी ।
सबसे पहले, करता है /path_to_my_php_script/info.php कमांड लाइन से सही ढंग से चलाएं?
यदि हां, तो क्या यह भी इस तरह सही ढंग से चलता है?:
चरण (3) क्रॉन आपके प्रोग्राम को कैसे चलाएगा (जैसा कि "मैन 5 क्रॉन"में प्रलेखित है ।
आपके पास सबसे अधिक संभावित समस्या यह है कि आपके प्रोग्राम को चलाने के लिए पथ क्रॉन का उपयोग बहुत अधिक प्रतिबंधक है । इसलिए, आप अपनी क्रोनटैब प्रविष्टि के शीर्ष पर निम्नलिखित की तरह कुछ जोड़ना चाह सकते हैं (आपको अपनी स्क्रिप्ट की आवश्यकता होगी जो भी निर्देशिकाओं में जोड़ना होगा):
PATH=~/bin:/usr/bin/:/bin
यह भी ध्यान दें कि क्रॉन डिफ़ॉल्ट रूप से उपयोग करेगा /bin/sh, बैश नहीं । यदि आपको बैश की आवश्यकता है, तो इसे अपनी क्रोनटैब फ़ाइल की शुरुआत में भी जोड़ें:
SHELL=/bin/bash
ध्यान दें कि उन दोनों परिवर्तनों को प्रभावित करेगा सभी क्रोनटैब प्रविष्टियाँ। यदि आप अपने लिए इन मूल्यों को संशोधित करना चाहते हैं info.php कार्यक्रम, आप ऐसा कुछ कर सकते हैं:
यह भी उल्लेखनीय है कि "मेल" के लिए कॉन्फ़िगर किए गए सिस्टम पर (दूसरे शब्दों में एक सिस्टम जिसमें एमटीए कॉन्फ़िगर किया गया है [सेंडमेल/पोस्टफिक्स/आदि]), क्रोनटैब प्रोग्राम से सभी आउटपुट आपको ईमेल के माध्यम से स्वचालित रूप से भेजे जाते हैं । एक डिफ़ॉल्ट उबंटू डेस्कटॉप सिस्टम में स्थानीय मेल कॉन्फ़िगर नहीं होगा, लेकिन यदि आप किसी सर्वर पर काम कर रहे हैं तो आप उन सभी क्रॉन मेल को देखने के लिए टर्मिनल में "मेल" टाइप कर सकते हैं । यह भी लागू होता है"at"कमान।
आप टर्मिनल कमांड के साथ अपना सक्रिय क्रॉन देख सकते हैं:
crontab -l
यहाँ क्रम में पैरामीटर हैं:
मिनट (0-59)
घंटा (0-23)
महीने का दिन (1-31)
महीना (1-12)
सप्ताह का दिन (0-6) (रविवार=0)
आदेश
तो, आप अपनी स्क्रिप्ट को प्रत्येक घंटे के पहले मिनट में बुला रहे हैं । परीक्षण उद्देश्य के लिए आपको अपने आउटपुट का अधिक बार अंतराल पर परीक्षण करना चाहिए:
मुझे विश्वास है कि आप भी उपयोग कर सकते हैं run-parts क्रॉन जॉब्स को बैंड से बाहर चलाने के लिए । यह वास्तव में क्रॉन आवधिक क्रॉन नौकरियों को चलाने के लिए स्वयं का उपयोग करता है, इसलिए उचित तर्कों की आपूर्ति करके आप उन्हें किसी भी समय चला सकते हैं ।
यदि आप उदाहरण में परिभाषित सभी क्रॉन नौकरियों के बजाय केवल एक फ़ाइल चलाना चाहते हैं /etc/cron.daily आपको एक वैध रेगेक्स के साथ रेगेक्स तर्क की आपूर्ति करनी होगी । run-parts --list --regex '^p.*d$' /etc
ध्यान रखें कि क्रॉन जॉब्स को आमतौर पर एक्सटेंशन के बिना नाम दिया जाता है और निष्पादन योग्य के रूप में चिह्नित किया जाता है, इसलिए सुनिश्चित करें कि आपकी स्क्रिप्ट समान हैं, हालांकि रेगेक्स का उपयोग करने से आप एक्सटेंशन के साथ स्क्रिप्ट ट्रिगर कर सकते हैं ।
दुर्भाग्य से उपरोक्त सभी ने कोशिश की लेकिन मेरे लिए काम नहीं किया । जैसा कि आप परीक्षण /बिन/श-सी कहते हैं "(निर्यात पथ= / बिन; /tmp/trial.sh < / देव / नल) " संदेश के नीचे दिखाता है, सुनिश्चित नहीं है कि यह क्या है / बिन / श: पथ=/बिन: पहचानकर्ता नहीं है