Cron एक्सप्रेशन समझें

Cron एक्सप्रेशन पाँच फ़ील्ड की स्ट्रिंग है — मिनट, घंटा, महीने का दिन, महीना, हफ़्ते का दिन — जो शेड्यूलर को बताती है कि जॉब कब चलाना है। यही सिंटैक्स Linux crontab, Kubernetes CronJob, GitHub Actions शेड्यूल, Cloudflare Workers cron ट्रिगर और ज़्यादातर CI सिस्टम चलाता है, और Quartz व AWS EventBridge जैसे छह-फ़ील्ड वेरिएंट इसी पर बने हैं, इसलिए इसे पढ़ना और लिखना हर जगह काम आने वाली स्किल है।

यह गाइड हर फ़ील्ड और ऑपरेटर समझाती है, वे शेड्यूल देती है जो लोग सबसे ज़्यादा खोजते हैं, और उन जालों को समझाती है — टाइम ज़ोन, महीने का दिन बनाम हफ़्ते का दिन, और कुछ सिस्टम में अतिरिक्त सेकंड फ़ील्ड — जिनसे जॉब गलत समय पर चलता है या बिल्कुल नहीं चलता।

पाँच फ़ील्ड

नीचे के डायग्राम की तरह फ़ील्ड बाएँ से दाएँ पढ़े जाते हैं: मिनट (0–59), फिर घंटा (0–23), फिर महीने का दिन (1–31), फिर महीना (1–12 या JAN–DEC), फिर हफ़्ते का दिन (0–6, रविवार = 0, या SUN–SAT)।

  • * * * * * — हर मिनट।
  • 30 2 * * * — हर दिन 02:30 पर।
  • 0 9 * * 1-5 — सोमवार से शुक्रवार 09:00 पर।
Cron एक्सप्रेशन में पाँच फ़ील्ड होते हैं, जो पोज़िशन के हिसाब से बाएँ से दाएँ पढ़े जाते हैं: मिनट, घंटा, महीने का दिन, महीना और हफ़्ते का दिन; * अपने फ़ील्ड पर कोई पाबंदी नहीं लगाता।

सोमवार से शुक्रवार 09:00 पर

भाग 1:0 भाग 2:9 भाग 3:* भाग 4:* भाग 5:1-5

हर दिन 02:30 पर

भाग 1:30 भाग 2:2 भाग 3:* भाग 4:* भाग 5:*

हर मिनट

भाग 1:* भाग 2:* भाग 3:* भाग 4:* भाग 5:*

  1. 1मिनटअनुमत वैल्यू: 0–590: मिनट 0 पर
  2. 2घंटाअनुमत वैल्यू: 0–239: घंटा 9 पर
  3. 3महीने का दिनअनुमत वैल्यू: 1–31*: महीने का कोई भी दिन
  4. 4महीनाअनुमत वैल्यू: 1–12 या JAN–DEC*: कोई भी महीना
  5. 5हफ़्ते का दिनअनुमत वैल्यू: 0–6 या SUN–SAT; रविवार = 0, और ज़्यादातर इम्प्लीमेंटेशन 7 भी मानते हैं1-5: सोमवार से शुक्रवार

जब दोनों दिन-फ़ील्ड सीमित हों, स्टैंडर्ड cron जॉब तब चलाता है जब कोई एक मैच करे (OR); देखें "महीने का दिन बनाम हफ़्ते का दिन"।

पाठ संस्करण
┌───────────── minute        (0–59)
│ ┌─────────── hour          (0–23)
│ │ ┌───────── day of month  (1–31)
│ │ │ ┌─────── month         (1–12 or JAN–DEC)
│ │ │ │ ┌───── day of week   (0–6, Sunday = 0, or SUN–SAT)
│ │ │ │ │
* * * * *   → every minute
30 2 * * *  → at 02:30 every day
0 9 * * 1-5 → at 09:00 Monday to Friday

आज़माएँ: Cron एक्सप्रेशन एक्सप्लेनर

ऑपरेटर: *, /, - और ,

  • * (एस्टरिस्क) — हर वैल्यू। घंटे के फ़ील्ड में * का मतलब हर घंटा।
  • , (कॉमा) — लिस्ट। मिनट के फ़ील्ड में 0,30 का मतलब मिनट 0 और मिनट 30 पर।
  • - (हाइफ़न) — रेंज। घंटे के फ़ील्ड में 9-17 का मतलब 9, 10, … 17।
  • / (स्लैश) — स्टेप। मिनट के फ़ील्ड में */15 का मतलब हर 15 मिनट (0, 15, 30, 45)। महीने के दिन वाले फ़ील्ड में 1-31/2 (या */2) का मतलब महीने की विषम तारीख़ें हैं — 1, 3, 5 … 31 — इसलिए जो जॉब 31 तारीख़ को चला, वह अगले दिन 1 तारीख़ को फिर चलेगा: यह हर दो दिन का पक्का अंतराल नहीं है।
  • नाम — JAN–DEC और SUN–SAT ज़्यादातर इम्प्लीमेंटेशन में चलते हैं और नंबर से पढ़ने में आसान हैं।
  • एक्सटेंशन — कुछ शेड्यूलर L (last), W (nearest weekday), # (nth weekday) और ? स्वीकार करते हैं — ये Quartz/Spring की खूबियाँ हैं, स्टैंडर्ड cron की नहीं।

आज़माएँ: Cron एक्सप्रेशन जनरेटर

आम शेड्यूल

  • */5 * * * * — हर 5 मिनट।
  • 0 * * * * — हर घंटे, घंटे की शुरुआत पर।
  • 0 */6 * * * — हर 6 घंटे (00:00, 06:00, 12:00, 18:00)।
  • 0 0 * * * — हर दिन आधी रात को।
  • 0 9 * * 1-5 — सोमवार से शुक्रवार 09:00 पर।
  • 0 9 * * 1 — हर सोमवार 09:00 पर।
  • 0 0 1 * * — हर महीने की पहली तारीख़ को आधी रात को।
  • 0 0 1 1 * — साल में एक बार, 1 जनवरी को।
  • 30 23 * * 0 — हर रविवार 23:30 पर।
  • 0 8,20 * * * — दिन में दो बार, 08:00 और 20:00।
  • 15 3 */2 * * — महीने की विषम तारीख़ों को 03:15 पर।
  • 0 0 * * 5 — हर शुक्रवार आधी रात को।
*/5 * * * *      every 5 minutes
0 * * * *        every hour, on the hour
0 */6 * * *      every 6 hours (00:00, 06:00, 12:00, 18:00)
0 0 * * *        every day at midnight
0 9 * * 1-5      weekdays at 09:00
0 9 * * 1        every Monday at 09:00
0 0 1 * *        first day of every month at midnight
0 0 1 1 *        once a year, 1 January
30 23 * * 0      Sundays at 23:30
0 8,20 * * *     twice a day, 08:00 and 20:00
15 3 */2 * *     odd-numbered days of the month at 03:15
0 0 * * 5        every Friday at midnight

आज़माएँ: Cron एक्सप्रेशन जनरेटर आज़माएँ: Cron एक्सप्रेशन वैलिडेटर

टाइम ज़ोन: सबसे आम cron बग

Cron एक्सप्रेशन का अपना कोई टाइम ज़ोन नहीं होता; यह उस ज़ोन में चलता है जो शेड्यूलर इस्तेमाल करता है। Linux crontab सिस्टम ज़ोन इस्तेमाल करता है; Cloudflare Workers UTC; GitHub Actions UTC, जब तक शेड्यूल में timezone न दिया गया हो; Kubernetes CronJob kube-controller-manager का लोकल ज़ोन (मैनेज्ड क्लस्टर पर अक्सर UTC), जब तक .spec.timeZone सेट न हो; और क्लाउड सर्विसेज़ अलग-अलग। भारतीय समय (IST, UTC+5:30) सुबह 09:00 के लिए बना जॉब UTC शेड्यूलर पर 30 3 * * * लिखना होगा — और डेलाइट सेविंग वाले ज़ोन में 09:00 साल में दो बार एक घंटा खिसक जाता है। एक्सप्रेशन के पास हमेशा ज़ोन लिखें और साफ़-साफ़ कन्वर्ट करें।

आज़माएँ: Timezone कन्वर्टर

महीने का दिन बनाम हफ़्ते का दिन

जब दोनों दिन-फ़ील्ड सीमित हों, स्टैंडर्ड cron जॉब तब चलाता है जब कोई एक मैच करे (OR), दोनों नहीं। 0 0 13 * 5 हर 13 तारीख़ को और हर शुक्रवार को चलता है, सिर्फ़ शुक्रवार 13 को नहीं। "महीने का दूसरा मंगलवार" या "महीने का आख़िरी दिन" कहने के लिए Quartz-स्टाइल एक्सटेंशन या जॉब के अंदर छोटी जाँच चाहिए।

आज़माएँ: Cron एक्सप्रेशन एक्सप्लेनर

छह-फ़ील्ड cron और दूसरे वेरिएंट

  • Quartz, Spring और कुछ Java शेड्यूलर सेकंड फ़ील्ड पहले रखते हैं: 0 */5 * * * ? — छह या सात फ़ील्ड। वहाँ पाँच-फ़ील्ड एक्सप्रेशन पेस्ट करने से हर फ़ील्ड एक खिसक जाता है।
  • AWS EventBridge के शेड्यूल्ड रूल छह फ़ील्ड लेते हैं — मिनट, घंटा, महीने का दिन, महीना, हफ़्ते का दिन और साल का फ़ील्ड — दोनों दिन-फ़ील्ड में से एक में ? ज़रूरी है, और हफ़्ते का दिन रविवार से 1–7 गिना जाता है: cron(0 9 ? * MON-FRI *)। वहाँ पाँच-फ़ील्ड एक्सप्रेशन रिजेक्ट हो जाता है।
  • Cloudflare Workers, Kubernetes, GitHub Actions और Vercel स्टैंडर्ड पाँच फ़ील्ड इस्तेमाल करते हैं।
  • कुछ सिस्टम @hourly, @daily, @weekly, @monthly और @yearly शॉर्टहैंड स्वीकार करते हैं।
  • न्यूनतम रेज़ोल्यूशन एक मिनट है; सब-मिनट शेड्यूल के लिए अलग मैकेनिज़्म चाहिए।

आज़माएँ: Cron एक्सप्रेशन वैलिडेटर

Cron एक्सप्रेशन टेस्ट करना

डिप्लॉय से पहले एक्सप्रेशन को ऐसे वैलिडेटर में पेस्ट करें जो आपके ज़ोन में अगले कई रन टाइम दिखाए। जाँचें कि पहला रन आपकी उम्मीद के समय है, रन के बीच अंतराल सही है, और महीने के अंत व वीकेंड के केस ठीक व्यवहार करते हैं। फिर जॉब को idempotent बनाएँ — दो बार चलाना सुरक्षित — क्योंकि हर शेड्यूलर कभी न कभी उसे दो बार चलाएगा या एक बार छोड़ देगा।

आज़माएँ: Cron एक्सप्रेशन वैलिडेटर आज़माएँ: Unix टाइमस्टैम्प कन्वर्टर

अक्सर पूछे जाने वाले सवाल

cron में * * * * * का क्या मतलब है?

हर दिन के हर घंटे का हर मिनट। हर एस्टरिस्क अपने फ़ील्ड के लिए "हर वैल्यू" का मतलब रखता है।

हर 5 मिनट में cron जॉब कैसे चलाएँ?

*/5 * * * * इस्तेमाल करें। मिनट फ़ील्ड में स्टेप ऑपरेटर 0, 5, 10 … 55 पर चलता है।

हर सोमवार सुबह 9 बजे जॉब कैसे शेड्यूल करें?

0 9 * * 1 — मिनट 0, घंटा 9, महीने का कोई भी दिन, कोई भी महीना, वीकडे 1 (सोमवार)।

cron में रविवार 0 है या 7?

ज़्यादातर इम्प्लीमेंटेशन में दोनों चलते हैं: 0 और 7 का मतलब रविवार। अस्पष्टता से बचने के लिए शेड्यूलर नाम स्वीकार करे तो SUN इस्तेमाल करें।

cron कौन-सा टाइम ज़ोन इस्तेमाल करता है?

जो शेड्यूलर में कॉन्फ़िगर है — crontab के लिए सिस्टम ज़ोन, Cloudflare Workers के लिए UTC, GitHub Actions के लिए UTC (जब तक शेड्यूल में timezone न हो), और Kubernetes के लिए kube-controller-manager का ज़ोन (जब तक CronJob में .spec.timeZone सेट न हो)। एक्सप्रेशन लिखते समय अपना लोकल समय उस ज़ोन में बदलें।

मेरा cron जॉब क्यों नहीं चलता?

आम वजहें: एक्सप्रेशन गलत ज़ोन में है, पाँच-फ़ील्ड शेड्यूलर को छह-फ़ील्ड एक्सप्रेशन दिया गया (या उल्टा), महीने के दिन और हफ़्ते के दिन फ़ील्ड OR की तरह मिलते हैं, या जॉब चलता है लेकिन चुपचाप फ़ेल होता है — शेड्यूलर के लॉग और नेक्स्ट-रन प्रिव्यू देखें।

संदर्भ

  • crontab — POSIX.1-2017 (IEEE Std 1003.1-2017)The Open Group · 2017पाँच-फ़ील्ड crontab लाइन की पोर्टेबल परिभाषा और हर फ़ील्ड का अर्थ।
  • crontab(5) — Linux manual pageman7.orgLinux (cron/Vixie) crontab फ़ॉर्मेट, रेंज, स्टेप, लिस्ट और @hourly जैसे शॉर्टकट सहित।

इस गाइड में बताए गए टूल्स

तारीख़ और समय को अलग-अलग timezone के बीच बदलें (रियाद, अम्मान, दिल्ली, UTC, न्यूयॉर्क, लंदन…)।

यूटिलिटीज़

और गाइड

और गाइड
टेस्ट डिज़ाइन

डेट और टाइम टेस्टिंग

तारीख़ और समय की टेस्टिंग: clock inject करना, future date simulation, टेस्ट डेटा की date shifting, महीने का अंत, leap year, time zone, DST और 2038।

22 मिनट पढ़ने का समय
JSON और डेटा

JSON क्या है?

JSON आसान भाषा में: यह क्या है, छह वैल्यू टाइप, वे सिंटैक्स नियम जिनमें लोग अटकते हैं, इसे फ़ॉर्मेट और वैलिडेट कैसे करें, और XML व YAML से इसकी तुलना।

5 मिनट पढ़ने का समय
सुरक्षा

JWT क्या है? JSON Web Token समझें

JWT आसान भाषा में: JSON Web Token के तीन हिस्से, exp और sub जैसे क्लेम, डिकोड और वेरिफ़ाई कैसे करें, डिकोड करना वेरिफ़ाई क्यों नहीं, और सिक्योरिटी।

5 मिनट पढ़ने का समय
एन्कोडिंग

Base64 क्या है? एन्कोडिंग समझें

Base64 समझें: यह क्या है और क्या नहीं, एन्कोडिंग कैसे काम करती है, आउटपुट एक-तिहाई क्यों बढ़ता है, Base64 बनाम Base64URL, = पैडिंग, और एन्कोड-डिकोड।

5 मिनट पढ़ने का समय
यूटिलिटीज़

UUID क्या है? v4 बनाम v7, UUID बनाम GUID और ULID

UUID समझें: 128-बिट फ़ॉर्मेट, v4 बनाम v7, डेटाबेस key के लिए v7 बेहतर क्यों, UUID बनाम GUID बनाम ULID, कॉलिज़न की संभावना, और जनरेट-वैलिडेट कैसे करें।

5 मिनट पढ़ने का समय
वेब

HTTP स्टेटस कोड समझें

HTTP स्टेटस कोड की हर क्लास उन कोड के साथ जो असल में मिलते हैं — 200, 301, 400, 401, 403, 404, 422, 429, 500, 502, 503, 504 — वजह और कौन-सा लौटाएँ।

5 मिनट पढ़ने का समय