Cron Expression बेसिक्स: 5 फील्ड्स को समझना
स्टैंडर्ड cron सिंटैक्स का सरल भाषा में विश्लेषण जिसे आप तुरंत लागू कर सकते हैं
Cron एक्सप्लेनर आज़माएंCron Expressions अनुभवी डेवलपर्स को भी क्यों परेशान करती हैं
अधिकांश cron गलतियां डिप्लॉयमेंट से पहले शुरू होती हैं, जब शेड्यूल इरादा और सिंटैक्स अलग हो जाते हैं। आप चाहते हैं कि एक जॉब हर कार्य दिवस सुबह 8 बजे चले, लेकिन एक गलत जगह रखा गया मान इसे हर घंटे या महीने के हर दिन शिफ्ट कर देता है। मूल कारण लगभग हमेशा एक ही होता है: cron expression की पांच फील्ड्स कॉम्पैक्ट, पोज़ीशनल, और माफ़ न करने वाली हैं।
एक स्टैंडर्ड cron expression पांच स्पेस-सेपरेटेड फील्ड्स की एक सिंगल लाइन है। प्रत्येक फील्ड समय की एक इकाई से मैप होती है, और मिलकर वे एक दोहराने वाला शेड्यूल परिभाषित करती हैं। डिफ़ॉल्ट रूप से कोई लेबल नहीं, कोई कीवर्ड नहीं, और जब शेड्यूलर लाइन पढ़ता है तो अस्पष्टता के लिए कोई जगह नहीं।
यह लेख सरल भाषा में 5-फील्ड cron फॉर्मेट की संरचना समझाता है। आप सीखेंगे कि प्रत्येक फील्ड क्या नियंत्रित करती है, सामान्य टोकन कैसे काम करते हैं, और सामान्य गलत पठन कहां होते हैं। हर उदाहरण को Cronwise Cron एक्सप्लेनर में तुरंत सत्यापित किया जा सकता है, जो आपके द्वारा दर्ज की गई किसी भी expression के लिए सरल भाषा ब्रेकडाउन और टाइमज़ोन-अवेयर नेक्स्ट-रन प्रीव्यू देता है।
चाहे आप अपनी पहली crontab एंट्री लिख रहे हों या किसी और द्वारा लिखे गए शेड्यूल की समीक्षा कर रहे हों, इन पांच फील्ड्स को समझना हर cron वर्कफ़्लो की नींव है जो आगे आता है।
पांच फील्ड्स: प्रत्येक क्या नियंत्रित करती है
हर स्टैंडर्ड cron expression एक ही पोज़ीशनल फॉर्मेट का पालन करती है। बाएं से दाएं, पांच फील्ड्स हैं:
| पोज़ीशन | फील्ड | अनुमत मान | विवरण |
|---|---|---|---|
| 1 | मिनट | 0 – 59 | घंटे का वह मिनट जब जॉब चलती है |
| 2 | घंटा | 0 – 23 | दिन का घंटा (24-घंटे फॉर्मेट) |
| 3 | महीने का दिन | 1 – 31 | कैलेंडर दिन |
| 4 | महीना | 1 – 12 | वर्ष का महीना |
| 5 | सप्ताह का दिन | 0 – 7 | कार्य दिवस (0 और 7 दोनों रविवार हैं) |
एक ठोस उदाहरण मैपिंग को स्पष्ट करता है। Expression 30 8 * * 1-5 का मतलब है: मिनट 30 पर, घंटे 8 पर, महीने के हर दिन, हर महीने में, लेकिन केवल सोमवार से शुक्रवार के कार्य दिवसों पर। सरल भाषा में: सुबह 8:30, सोमवार से शुक्रवार।
Asterisk (*) एक वाइल्डकार्ड है जो उस फील्ड के लिए हर अनुमत मान से मेल खाता है। जब आप इसे देखें, इसे "हर" पढ़ें। इसलिए * * * * * का मतलब है हर दिन का हर घंटा का हर मिनट — स्टैंडर्ड cron में सबसे बारंबार संभव शेड्यूल।
सामान्य टोकन और वे कैसे काम करते हैं
Asterisk वाइल्डकार्ड के अलावा, cron फील्ड्स कई टोकन सपोर्ट करती हैं जो आपको अलग एंट्री लिखे बिना रेंज, अंतराल, और लिस्ट व्यक्त करने देते हैं।
कॉमा (लिस्ट)
कॉमा व्यक्तिगत मानों को अलग करता है। 0 9,12,18 * * * हर दिन सुबह 9:00, दोपहर 12:00, और शाम 6:00 बजे फायर होता है। लिस्ट में प्रत्येक मान स्वतंत्र रूप से ट्रीट किया जाता है।
हाइफ़न (रेंज)
हाइफ़न एक निरंतर रेंज परिभाषित करता है। 0 9-17 * * * सुबह 9:00 से शाम 5:00 बजे तक हर घंटे के शीर्ष पर फायर होता है। रेंज दोनों सिरों पर inclusive होती है।
स्लैश (स्टेप)
स्लैश एक अंतराल परिभाषित करता है। */15 * * * * मिनट 0 से शुरू होकर हर 15 मिनट में फायर होता है। आप रेंज को स्टेप के साथ मिला सकते हैं: 0-30/10 * * * * हर घंटे के मिनट 0, 10, 20, और 30 पर फायर होता है।
टोकन मिलाना
एक ही फील्ड में टोकन मिलाए जा सकते हैं। 0 8-12,18 * * 1-5 घंटे 8 से 12 के शीर्ष पर और घंटे 18 पर भी चलता है, लेकिन केवल कार्य दिवसों पर। प्रत्येक फील्ड स्वतंत्र रूप से मूल्यांकित होती है, और शेड्यूलर तब फायर करता है जब सभी पांच फील्ड्स एक साथ मैच करती हैं।
रीडिंग रणनीतियों की गहरी जानकारी के लिए, Cron Expressions जल्दी कैसे पढ़ें देखें, जो एक नज़र में expressions पार्स करने के मानसिक मॉडल कवर करता है।
वास्तविक शेड्यूल की व्याख्या कैसे करें
Cron expression को सही ढंग से पढ़ने का मतलब है प्रत्येक फील्ड का क्रम में अनुवाद करना और फिर उन्हें एक वाक्य में संयोजित करना। यहां उनके सरल भाषा समकक्षों के साथ व्यावहारिक उदाहरण हैं:
| Expression | अर्थ | कब उपयोग करें | जोखिम नोट्स |
|---|---|---|---|
0 0 * * * | हर दिन आधी रात | दैनिक बैच जॉब्स, लॉग रोटेशन | यदि कई जॉब्स इस स्लॉट शेयर करें तो भारी लोड |
*/5 * * * * | हर 5 मिनट | हेल्थ चेक्स, क्यू पोलिंग | उच्च फ्रीक्वेंसी; पुष्टि करें कि जॉब idempotent है |
0 9 1 * * | हर महीने की 1 तारीख को सुबह 9:00 बजे | मासिक रिपोर्ट | 31 से कम दिनों वाले महीने सामान्य रूप से व्यवहार करते हैं |
30 2 * * 0 | हर रविवार रात 2:30 बजे | साप्ताहिक मेंटेनेंस विंडो | वसंत में DST ट्रांज़िशन के साथ ओवरलैप हो सकता है |
0 */2 * * 1-5 | कार्य दिवसों पर हर 2 घंटे | बिज़नेस-आवर्स पोलिंग | 0, 2, 4 … 22 पर चलता है — केवल कार्य घंटों में नहीं |
अंतिम उदाहरण एक आम गलत व्याख्या है। घंटे फील्ड में */2 का मतलब है 0 से शुरू होकर हर दूसरा घंटा, बिज़नेस आवर्स के दौरान हर दो घंटे नहीं। यदि आप केवल सुबह 9 बजे से शाम 5 बजे चाहते हैं, तो आपको 0 9-17/2 * * 1-5 चाहिए। यह बिल्कुल उस तरह की सूक्ष्म गलती है जो Cronwise एक्सप्लेनर आपके टाइमज़ोन में अगले 10 शेड्यूल किए गए रन दिखाकर पकड़ता है।
एज केसेज़ और फील्ड सीमाएं
5-फील्ड फॉर्मेट की सीमाएं हैं जिन्हें भूलना आसान है। इन्हें समझना साइलेंट फेल्योर को रोकता है।
Day-of-Month बनाम Day-of-Week इंटरैक्शन
स्टैंडर्ड cron में, जब day-of-month (फील्ड 3) और day-of-week (फील्ड 5) दोनों non-wildcard मानों पर सेट होते हैं, तो अधिकांश इम्प्लीमेंटेशन उन्हें union के रूप में ट्रीट करते हैं: जॉब चलती है यदि कोई भी शर्त सच हो। इसका मतलब है 0 9 15 * 1 का मतलब "15 तारीख अगर वह सोमवार है" नहीं है। इसका मतलब है "हर महीने की 15 तारीख और हर सोमवार।" यह cron में सबसे बार रिपोर्ट की जाने वाली आश्चर्यजनक बातों में से एक है।
महीना और कार्य दिवस सीमाएं
Day-of-month को 31 सेट करने का मतलब है कि जॉब केवल 31 दिनों वाले महीनों में चलेगी (जनवरी, मार्च, मई, जुलाई, अगस्त, अक्टूबर, दिसंबर)। यह चुपचाप छोटे महीनों को स्किप करेगी। इसी तरह, day-of-week मान 0 और 7 दोनों रविवार का प्रतिनिधित्व करते हैं, लेकिन उन्हें एक ही expression में मिलाना कोड रिव्यू के दौरान भ्रम पैदा कर सकता है।
टाइमज़ोन निर्भरता
Cron expression में अपने आप कोई टाइमज़ोन जानकारी नहीं होती। शेड्यूलर जो भी टाइमज़ोन कॉन्फ़िगर किया गया है उसमें समय की व्याख्या करता है, जो UTC, सर्वर का लोकल टाइम, या एक स्पष्ट ओवरराइड हो सकता है। यदि आपकी टीम कई टाइमज़ोन में फैली है, तो डिप्लॉय करने से पहले हमेशा शेड्यूलर की टाइमज़ोन सेटिंग की पुष्टि करें। Cronwise आपको कोई भी IANA टाइमज़ोन चुनने और उसके अनुसार रन का प्रीव्यू देखने देता है।
Cronwise वर्कफ़्लो में जो सीखा है उसे लागू करें
एक बार जब आप पांच फील्ड्स समझ जाते हैं, तो अगला कदम cron expressions पढ़ने से लेकर उन्हें आत्मविश्वास से बनाने तक जाना है। Cronwise इसके लिए दो पूरक रास्ते प्रदान करता है।
पहले समझाएं, फिर जनरेट करें
मौजूदा expression सत्यापित करने के लिए Cron एक्सप्लेनर से शुरू करें। इसे पेस्ट करें, सरल भाषा सारांश पढ़ें, और नेक्स्ट-रन टेबल स्कैन करें। यदि शेड्यूल वह नहीं है जो आपने इरादा किया था, तो सही expression फील्ड दर फील्ड विज़ुअली बनाने के लिए Cron जनरेटर पर स्विच करें। जनरेटर ड्रॉपडाउन और टैब्स से मान चुनने देकर सिंटैक्स अनुमान को समाप्त करता है।
डिप्लॉयमेंट से पहले सत्यापन चेकलिस्ट
| जांच | यह क्यों मायने रखता है | पास मानदंड |
|---|---|---|
| सरल भाषा सारांश इरादे से मेल खाता है | फील्ड-ऑर्डर गलतियां पकड़ता है | सारांश वाक्य आपके शेड्यूलिंग लक्ष्य से मेल खाता है |
| नेक्स्ट-रन टाइमस्टैंप सही हैं | टोकन दुरुपयोग (रेंज, स्टेप) पकड़ता है | पहले 5 रन अपेक्षित तारीखों और समय से मेल खाते हैं |
| टाइमज़ोन टारगेट एनवायरनमेंट से मेल खाता है | ऑफ-बाय-आवर्स एक्ज़ीक्यूशन रोकता है | चयनित टाइमज़ोन शेड्यूलर के कॉन्फ़िगर्ड टाइमज़ोन के बराबर है |
| कोई वैलिडेशन वॉर्निंग नहीं | जोखिम भरे पैटर्न जल्दी पकड़ता है | शून्य वॉर्निंग या प्रत्येक वॉर्निंग जानबूझकर स्वीकार की गई |
विज़ुअल बिल्डर की पूरी वॉकथ्रू के लिए, विज़ुअल Cron जनरेटर: स्टेप-बाय-स्टेप वर्कफ़्लो पढ़ें, जो टैब नेविगेशन, सेव किए गए प्रीसेट, और एक्सपोर्ट विकल्पों को कवर करता है।
निष्कर्ष: विश्वास के साथ डिप्लॉय करें
5-फील्ड cron फॉर्मेट भ्रामक रूप से सरल है: मिनट, घंटा, महीने का दिन, महीना, और सप्ताह का दिन। इसमें महारत हासिल करने का मतलब है सिर्फ फील्ड पोज़ीशन नहीं बल्कि यह भी जानना कि टोकन कैसे संयोजित होते हैं, एज केसेज़ कहां छिपते हैं, और 10-सेकंड का वैलिडेशन चेक हर बार प्रयास के लायक क्यों है।
आगे ले जाने के लिए प्रमुख नियम यहां हैं:
- फील्ड्स बाएं से दाएं पढ़ें: मिनट, घंटा, दिन, महीना, कार्य दिवस।
- Asterisk का मतलब "हर" है — यह प्लेसहोल्डर या डिफ़ॉल्ट नहीं है।
- रेंज, लिस्ट, और स्टेप मिलाए जा सकते हैं, लेकिन प्रत्येक फील्ड स्वतंत्र रूप से मूल्यांकित होती है।
- Day-of-month और day-of-week जब दोनों non-wildcard हों तो union बनाते हैं — intersection नहीं।
- हमेशा शेड्यूलर का टाइमज़ोन सत्यापित करें और डिप्लॉय करने से पहले अगले रन का प्रीव्यू देखें।
Cronwise इस सत्यापन को तेज़ बनाने के लिए बनाया गया है। Expression पेस्ट करें, स्पष्टीकरण पढ़ें, रन जांचें, और विश्वास के साथ डिप्लॉय करें। सीखना जारी रखने के लिए Cronwise पर सभी cron लेख ब्राउज़ करें, या सीधे टूल में जाएं।