Cron एक्सप्रेशन को समझें: कुछ भी शेड्यूल करें
आपको हर रात 3 बजे डेटाबेस बैकअप चलाना है। या हर सोमवार सुबह एक रिपोर्ट भेजनी है। या हर 15 मिनट में कैश साफ़ करना है। Linux और Unix सर्वरों पर, इसके लिए टूल cron है, और आप cron को बताते हैं कि कब कुछ चलाना है एक cron एक्सप्रेशन के साथ।
Cron एक्सप्रेशन पहली नज़र में डरावने लगते हैं। 0 3 * * * या */15 9-17 * * 1-5 बकवास लग सकते हैं यदि आप पैटर्न नहीं जानते। लेकिन सिंटैक्स आश्चर्यजनक रूप से सरल है एक बार जब आप पांच फ़ील्ड समझ जाते हैं।
पांच फ़ील्ड
हर मानक cron एक्सप्रेशन में ठीक पांच फ़ील्ड होते हैं, स्पेस द्वारा अलग किए गए। प्रत्येक फ़ील्ड समय की एक इकाई का प्रतिनिधित्व करता है:
┌───────────── मिनट (0-59)
│ ┌───────────── घंटा (0-23)
│ │ ┌───────────── महीने का दिन (1-31)
│ │ │ ┌───────────── महीना (1-12)
│ │ │ │ ┌───────────── सप्ताह का दिन (0-7, जहां 0 और 7 रविवार हैं)
│ │ │ │ │
* * * * *
बस इतना ही। पांच फ़ील्ड, बाएं से दाएं: मिनट, घंटा, महीने का दिन, महीना, सप्ताह का दिन।
क्या आप जानते हैं? "cron" नाम ग्रीक शब्द "chronos" से आता है, जिसका अर्थ है समय। Cron डेमन (बैकग्राउंड प्रोसेस) 1975 से Unix-जैसे ऑपरेटिंग सिस्टम का मुख्य हिस्सा रहा है।
विशेष वर्ण
ऐस्टरिस्क (*) — हर मान
एक ऐस्टरिस्क का अर्थ है उस फ़ील्ड के लिए "हर संभव मान"।
* * * * * = हर दिन के हर घंटे का हर मिनट।
कॉमा (,) — एकाधिक मान
कॉमा व्यक्तिगत मानों को अलग करता है।
0 9,12,18 * * * = घंटे 9, 12, और 18 के मिनट 0 पर (सुबह 9:00, दोपहर 12:00, शाम 6:00)।
डैश (-) — मानों की श्रेणी
डैश एक श्रेणी परिभाषित करता है।
0 9-17 * * * = 9 से 17 तक हर घंटे के मिनट 0 पर (सुबह 9:00 से शाम 5:00, प्रति घंटा)।
स्लैश (/) — स्टेप मान
स्लैश अंतराल परिभाषित करता है।
*/15 * * * * = हर 15 मिनट (प्रत्येक घंटे का मिनट 0, 15, 30, 45)।
0 */2 * * * = मिनट 0 पर हर 2 घंटे (आधी रात, 2 AM, 4 AM, ...)।
Cron एक्सप्रेशन पढ़ना: अभ्यास
आइए सामान्य उदाहरणों पर काम करें। प्रत्येक के लिए, पांच फ़ील्ड बाएं से दाएं पढ़ें।
0 3 * * * — रोज़ाना सुबह 3:00 बजे
| फ़ील्ड | मान | अर्थ |
|---|---|---|
| मिनट | 0 | मिनट 0 पर |
| घंटा | 3 | घंटा 3 (सुबह 3 बजे) |
| महीने का दिन | * | हर दिन |
| महीना | * | हर महीना |
| सप्ताह का दिन | * | सप्ताह का हर दिन |
अनुवाद: "हर दिन सुबह 3:00 बजे।" रात्रि बैकअप के लिए क्लासिक विकल्प।
*/15 * * * * — हर 15 मिनट
| फ़ील्ड | मान | अर्थ |
|---|---|---|
| मिनट | */15 | हर 15 मिनट |
| घंटा | * | हर घंटा |
| महीने का दिन | * | हर दिन |
| महीना | * | हर महीना |
| सप्ताह का दिन | * | हर दिन |
अनुवाद: "हर 15 मिनट, चौबीसों घंटे।" हेल्थ चेक और कैश रिफ़्रेश के लिए सामान्य।
0 9 * * 1-5 — कार्यदिवसों पर सुबह 9:00 बजे
| फ़ील्ड | मान | अर्थ |
|---|---|---|
| मिनट | 0 | मिनट 0 पर |
| घंटा | 9 | घंटा 9 |
| महीने का दिन | * | हर दिन |
| महीना | * | हर महीना |
| सप्ताह का दिन | 1-5 | सोमवार से शुक्रवार |
अनुवाद: "सुबह 9:00 बजे, सोमवार से शुक्रवार।" दैनिक कार्य रिपोर्ट के लिए उत्तम।
0 0 1 * * — हर महीने का पहला दिन
अनुवाद: "हर महीने के पहले दिन आधी रात को।" मासिक रिपोर्ट, बिलिंग, या सफ़ाई के लिए उपयोग किया जाता है।
30 8 * * 1 — सोमवार सुबह 8:30 बजे
अनुवाद: "हर सोमवार सुबह 8:30 बजे।" साप्ताहिक टीम सूचनाओं के लिए बढ़िया।
अपने खुद के Cron एक्सप्रेशन लिखना
यहां एक व्यवस्थित दृष्टिकोण है:
- कब से शुरू करें। "हर दिन सुबह 3 बजे" या "व्यावसायिक घंटों में हर 5 मिनट।"
- बाएं से दाएं फ़ील्ड भरें। मिनट से शुरू करें, फिर घंटा, फिर महीने का दिन, फिर महीना, फिर सप्ताह का दिन।
- "हर" के लिए
*उपयोग करें। यदि आपको किसी फ़ील्ड की परवाह नहीं है, तो*उपयोग करें। - डिप्लॉय करने से पहले परीक्षण करें। हमेशा सत्यापित करें कि आपका एक्सप्रेशन अपेक्षित शेड्यूल उत्पन्न करता है।
सामान्य पैटर्न त्वरित संदर्भ
| शेड्यूल | एक्सप्रेशन |
|---|---|
| हर मिनट | * * * * * |
| हर 5 मिनट | */5 * * * * |
| हर घंटा | 0 * * * * |
| रोज़ आधी रात | 0 0 * * * |
| रोज़ सुबह 3:00 बजे | 0 3 * * * |
| हर सोमवार सुबह 9:00 बजे | 0 9 * * 1 |
| कार्यदिवसों पर सुबह 8:30 बजे | 30 8 * * 1-5 |
| हर महीने की पहली तारीख | 0 0 1 * * |
| व्यावसायिक घंटों में हर 15 मिनट | */15 9-17 * * 1-5 |
| दिन में दो बार (सुबह 9 और शाम 6) | 0 9,18 * * * |
| हर रविवार सुबह 2:00 बजे | 0 2 * * 0 |
सामान्य गलतियां
यह भूलना कि घंटे 0-23 हैं
घंटा 13 दोपहर 1:00 बजे है, घंटा 1 नहीं। एक सामान्य त्रुटि 0 1 * * * लिखना है यह सोचकर कि यह दोपहर 1:00 बजे चलेगा जबकि यह वास्तव में सुबह 1:00 बजे चलता है।
सप्ताह के दिन का भ्रम
रविवार 0 या 7 (दोनों वैध) हो सकता है। सोमवार 1 है, शनिवार 6 है। कुछ लोग सोमवार को 0 होने की उम्मीद करते हैं।
महीने का दिन बनाम सप्ताह का दिन इंटरैक्शन
यदि आप महीने का दिन और सप्ताह का दिन दोनों निर्दिष्ट करते हैं (न तो * है), तो अधिकांश cron कार्यान्वयन कार्य तब चलाते हैं जब या तो शर्त पूरी होती है, दोनों पूरी होने पर नहीं। यह बहुत से लोगों को चौंकाता है।
चेतावनी एक्सप्रेशन 0 9 15 * 1 का अर्थ "15वीं को सुबह 9 बजे, लेकिन केवल यदि यह सोमवार है" नहीं है। इसका अर्थ है "हर महीने की 15वीं को सुबह 9 बजे और हर सोमवार को सुबह 9 बजे।" यह अप्रत्याशित व्यवहार का एक सामान्य स्रोत है।
समय क्षेत्र जागरूकता
Cron सर्वर के स्थानीय समय क्षेत्र में चलता है। यदि आपका सर्वर UTC में है और आप भारत (UTC+5:30) में हैं, तो 0 9 * * * cron जॉब आपके समय दोपहर 2:30 बजे चलती है। हमेशा अपने सर्वर का समय क्षेत्र जांचें।
सुझाव डिप्लॉय करने से पहले अपने cron एक्सप्रेशन का परीक्षण और विज़ुअलाइज़ेशन करें: Cron एक्सप्रेशन कैसे पढ़ें और परीक्षण करें। अगले रन टाइम देखें और पुष्टि करें कि शेड्यूल आपकी अपेक्षा के अनुरूप है।
अपने cron एक्सप्रेशन बनाएं और परीक्षण करें:
मुफ़्त, तुरंत, और कोई साइन-अप आवश्यक नहीं।