हर मिनट क्रॉन जॉब चलाएं

Run Cron Job Every Minute



अगर आप लिनक्स पर बैकग्राउंड में कोई प्रोग्राम या स्क्रिप्ट चलाना चाहते हैं तो क्रॉन जॉब बहुत जरूरी है। क्रॉन जॉब्स की मदद से आप किसी प्रोग्राम या स्क्रिप्ट को एक निश्चित समय अंतराल के बाद बैकग्राउंड में एक्जीक्यूट कर सकते हैं।

आइए क्रॉन जॉब्स के कुछ वास्तविक जीवन के उदाहरणों पर एक नज़र डालें।







  • मान लीजिए, आप एक वेबसाइट के मालिक हैं और आप अपनी वेबसाइट के सभी उपयोगकर्ताओं को हर दिन एक ईमेल भेजना चाहते हैं। आपको बस इतना करना है कि एक ईमेल भेजने वाली स्क्रिप्ट लिखें और हर दिन उस स्क्रिप्ट को चलाने के लिए क्रॉन जॉब सेट करें।
  • मान लीजिए, आप एक विज्ञापन एजेंसी के मालिक हैं और आप उन सभी विज्ञापनदाताओं को याद दिलाना चाहते हैं जिनका बैलेंस 5$ से कम है। आपको बस एक स्क्रिप्ट लिखनी है जो सभी विज्ञापनदाताओं के बैलेंस की जांच करती है और जब यह 5$ से कम हो जाती है, तो यह विज्ञापनदाता के मोबाइल नंबर या ईमेल पर एक सूचना भेजेगा। फिर स्क्रिप्ट को हर 5 से 10 मिनट या हर घंटे चलाने के लिए क्रॉन जॉब सेट करें।

लिनक्स में क्रॉन जॉब्स के कई अन्य उपयोग हैं।



इस लेख में, मैं आपको दिखाऊंगा कि लिनक्स पर हर मिनट क्रॉन जॉब कैसे चलाया जाता है। मैं प्रदर्शन के लिए डेबियन 9 स्ट्रेच का उपयोग करूंगा। लेकिन आप अपनी पसंद के किसी भी आधुनिक लिनक्स वितरण का उपयोग कर सकते हैं। आएँ शुरू करें।



Linux पर, आपको होने की ज़रूरत नहीं है जड़ क्रॉन जॉब चलाने के लिए। आप किसी भी उपयोगकर्ता के रूप में क्रॉन जॉब चला सकते हैं। Linux पर प्रत्येक उपयोगकर्ता a . का उपयोग कर सकता है क्रोंटैब क्रॉन नौकरियों का अपना सेट चलाने के लिए फ़ाइल।





डिफ़ॉल्ट रूप से, उपयोगकर्ता के पास नहीं होता है क्रोंटैब लिनक्स पर फ़ाइल। आप एक बना सकते हैं क्रोंटैब निम्न आदेश के साथ फ़ाइल:

$क्रोंटैब-और



यदि आप इस कमांड को पहली बार चला रहे हैं, तो आपको सूची से एक टेक्स्ट एडिटर चुनने के लिए कहा जाना चाहिए। मैं चुनूंगा नैनो , डिफ़ॉल्ट एक। आप जिसे पसंद करते हैं उसे चुन सकते हैं। एक बार जब आप कर लें, तो दबाएं .

NS क्रोंटैब फ़ाइल बनाई जानी चाहिए (यदि पहले से उपलब्ध नहीं है) और अपने पसंदीदा टेक्स्ट एडिटर के साथ खोली जानी चाहिए। अब आप इस फाइल के अंत में अपनी खुद की क्रॉन जॉब्स जोड़ सकते हैं और एक बार जब आप खुश हो जाएं, तो बस इसे सेव करें और टेक्स्ट एडिटर से बाहर निकलें।

हर मिनट कमांड चलाने का सिंटैक्स:

वाक्य रचना क्रोंटैब फ़ाइल इस प्रकार है:

मिनट घंटे का दिनऑफ़महीने महीने का दिनऑफ़वीक कमांडटूरन

यहां,

  • मिनट हो सकता है 0 प्रति 59 .
  • घंटा भी हो सकते हैं 0 प्रति 59 .
  • महीने का दिन हो सकता है 1 प्रति 31 .
  • महीना हो सकता है 1 प्रति 12 .
  • सप्ताह के दिन हो सकता है 0 प्रति 7 . 0 तथा 7 मतलब रविवार, 1 मतलब सोमवार, 2 यानी मंगलवार वगैरह।

चलाने के लिए कमांड टू रन कमांड हर मिनट, आपको इसे में लिखना चाहिए क्रोंटैब फ़ाइल इस प्रकार है:

* * * * *कमांड टू रन

हर मिनट एक क्रॉब जॉब चलाना:

अब जब हम सिद्धांतों को जान गए हैं, तो आइए एक सरल स्क्रिप्ट जोड़ें टाइमर.शो तक क्रोंटैब फ़ाइल और देखें कि इसे कैसे प्रबंधित करें।

में टाइमर.शो स्क्रिप्ट, मेरे पास केवल कोड की निम्नलिखित पंक्तियाँ हैं। यह केवल एक नई फ़ाइल बनाता है /home/shovon/bin/timer.log (यदि पहले से मौजूद नहीं है) और दिनांक कमांड के आउटपुट को इसमें जोड़ देता है।

अब स्क्रिप्ट को हमारे साथ जोड़ते हैं क्रोंटैब और इसे हर मिनट निम्न पंक्ति के साथ चलने दें:

* * * * * /घर/शोवोन/पूर्वाह्न/टाइमर.शो

एक बार जब आप इसे बचा लेते हैं क्रोंटैब फ़ाइल और टेक्स्ट एडिटर से बाहर निकलें, नया क्रोंटैब फ़ाइल स्थापित की जानी चाहिए।

एक मिनट बीत जाने के बाद, एक नई फाइल है टाइमर.लॉग वांछित निर्देशिका में बनाया गया है जैसा कि आप नीचे स्क्रीनशॉट के चिह्नित अनुभाग में देख सकते हैं।

से टाइमर.लॉग log फ़ाइल, यह स्पष्ट है कि स्क्रिप्ट टाइमर.शो हर मिनट चलता है।

क्रॉन जॉब्स से कैचिंग एरर:

क्रॉन जॉब से त्रुटियों को पकड़ने के लिए, आप त्रुटियों को भेज सकते हैं a त्रुटि लॉग फ़ाइल और सामान्य आउटपुट करने के लिए access.log उदाहरण के लिए फ़ाइल। बेशक आप अपनी इच्छानुसार फाइलों को नाम दे सकते हैं।

इसे प्रदर्शित करने के लिए, मैंने अपनी स्क्रिप्ट को संशोधित किया टाइमर.शो थोड़ा सा। अब त्रुटियां यहां भेजी जाती हैं त्रुटि लॉग में फ़ाइल / घर / शोवन / बिन निर्देशिका और आउटपुट को भेजा जाता है access.log में / घर / शोवन / बिन निर्देशिका।

सबसे पहले /tmp/i_must_be_here फ़ाइल मौजूद नहीं है, इसलिए मुझे त्रुटि मिलती है त्रुटि लॉग फ़ाइल जैसा कि आप देख सकते हैं।

NS access.log फ़ाइल इस समय खाली है।

अब मैं फाइल बनाने जा रहा हूँ /tmp/i_must_be_here

और जैसा कि आप देख सकते हैं, आउटपुट में है access.log अभी फाइल करें।

यदि आप चाहें, तो आप आउटपुट और त्रुटियों को उसी फ़ाइल में निम्नानुसार पुनर्निर्देशित कर सकते हैं:

जैसा कि आप देख सकते हैं, एसटीडीआईएन और एसटीडीईआरआर आउटपुट को भेजा जाता है आउट.लॉग फ़ाइल।

यह सुनिश्चित करना कि कार्य को फिर से चलाने से पहले अंतिम कार्य समाप्त हो गया हो:

इसके लिए काम करने के लिए, आप कार्य शुरू होने के ठीक बाद एक अस्थायी फ़ाइल बना सकते हैं और इसे समाप्त होने से ठीक पहले हटा सकते हैं। फिर आप जांच सकते हैं कि कार्य शुरू करने से पहले अस्थायी फ़ाइल मौजूद है या नहीं। यदि ऐसा होता है, तो आप कार्य से बाहर निकल सकते हैं और अस्थायी फ़ाइल अनुपलब्ध होने पर ही कार्य चला सकते हैं।

यह सरल लिपि बस यही करती है।

जैसा कि आप देख सकते हैं, टाइमर.पीआईडी फ़ाइल बनाई जाती है।

पढ़ना access.log फ़ाइल साबित करती है कि पिछले क्रॉन जॉब के चलने से पहले क्रॉन जॉब नहीं चलता है। जैसा कि आप देख सकते हैं, यह 01:32:01 पर चला और अगली बार इसे 01:33:01 पर चलना चाहिए था, लेकिन ऐसा नहीं हुआ। इसके बजाय, यह लगभग 3 मिनट बाद 01:35:01 बजे चला।

आसान डिबगिंग के लिए क्रॉन जॉब आउटपुट व्यवस्थित करना:

अपने क्रॉन जॉब को डीबग करना आसान बनाने के लिए आप आउटपुट को अच्छी तरह से प्रारूपित कर सकते हैं।

यह कैसे किया जा सकता है इसका एक उदाहरण निम्नलिखित लिपि में दिया गया है।

जैसा कि आप देख सकते हैं, आउटपुट, त्रुटियां और सफलता संदेश लॉग फ़ाइल में अच्छी तरह से मुद्रित होते हैं।

आप क्रॉन जॉब्स और शेल स्क्रिप्ट के साथ अद्भुत चीजें कर सकते हैं। मैंने यहां कुछ विचारों का प्रदर्शन किया। लेकिन आकाश तुम्हारी सीमा है। आपके पास किसी भी विचार के साथ प्रयोग करने के लिए स्वतंत्र महसूस करें। इस लेख को पढ़ने के लिए धन्यवाद।