Cron एक्सप्रेशन समझें
Cron एक्सप्रेशन पाँच फ़ील्ड की स्ट्रिंग है — मिनट, घंटा, महीने का दिन, महीना, हफ़्ते का दिन — जो शेड्यूलर को बताती है कि जॉब कब चलाना है। यही सिंटैक्स Linux crontab, Kubernetes CronJob, GitHub Actions शेड्यूल, Cloudflare Workers cron ट्रिगर, AWS EventBridge और ज़्यादातर CI सिस्टम चलाता है, इसलिए इसे पढ़ना और लिखना हर जगह काम आने वाली स्किल है।
यह गाइड हर फ़ील्ड और ऑपरेटर समझाती है, वे शेड्यूल देती है जो लोग सबसे ज़्यादा खोजते हैं, और उन जालों को समझाती है — टाइम ज़ोन, महीने का दिन बनाम हफ़्ते का दिन, और कुछ सिस्टम में अतिरिक्त सेकंड फ़ील्ड — जिनसे जॉब गलत समय पर चलता है या बिल्कुल नहीं चलता।
पाँच फ़ील्ड
┌───────────── 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ऑपरेटर: *, /, - और ,
- * (एस्टरिस्क) — हर वैल्यू। घंटे के फ़ील्ड में * का मतलब हर घंटा।
- , (कॉमा) — लिस्ट। मिनट के फ़ील्ड में 0,30 का मतलब मिनट 0 और मिनट 30 पर।
- - (हाइफ़न) — रेंज। घंटे के फ़ील्ड में 9-17 का मतलब 9, 10, … 17।
- / (स्लैश) — स्टेप। मिनट के फ़ील्ड में */15 का मतलब हर 15 मिनट (0, 15, 30, 45); 1-31/2 का मतलब हर दूसरे दिन।
- नाम — JAN–DEC और SUN–SAT ज़्यादातर इम्प्लीमेंटेशन में चलते हैं और नंबर से पढ़ने में आसान हैं।
- एक्सटेंशन — कुछ शेड्यूलर L (last), W (nearest weekday), # (nth weekday) और ? स्वीकार करते हैं — ये Quartz/Spring की खूबियाँ हैं, स्टैंडर्ड cron की नहीं।
आम शेड्यूल
*/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 * * every second day at 03:15
0 0 * * 5 every Friday at midnightआज़माएँ: Cron एक्सप्रेशन जनरेटर आज़माएँ: Cron एक्सप्रेशन वैलिडेटर
टाइम ज़ोन: सबसे आम cron बग
Cron एक्सप्रेशन का अपना कोई टाइम ज़ोन नहीं होता; यह उस ज़ोन में चलता है जो शेड्यूलर इस्तेमाल करता है। Linux crontab सिस्टम ज़ोन इस्तेमाल करता है, Kubernetes और Cloudflare Workers UTC, GitHub Actions UTC, और क्लाउड सर्विसेज़ अलग-अलग। भारतीय समय (IST, UTC+5:30) सुबह 09:00 के लिए बना जॉब UTC शेड्यूलर पर 30 3 * * * लिखना होगा — और डेलाइट सेविंग वाले ज़ोन में 09:00 साल में दो बार एक घंटा खिसक जाता है। एक्सप्रेशन के पास हमेशा ज़ोन लिखें और साफ़-साफ़ कन्वर्ट करें।
महीने का दिन बनाम हफ़्ते का दिन
जब दोनों दिन-फ़ील्ड सीमित हों, स्टैंडर्ड cron जॉब तब चलाता है जब कोई एक मैच करे (OR), दोनों नहीं। 0 0 13 * 5 हर 13 तारीख़ को और हर शुक्रवार को चलता है, सिर्फ़ शुक्रवार 13 को नहीं। "महीने का दूसरा मंगलवार" या "महीने का आख़िरी दिन" कहने के लिए Quartz-स्टाइल एक्सटेंशन या जॉब के अंदर छोटी जाँच चाहिए।
छह-फ़ील्ड cron और दूसरे वेरिएंट
- Quartz, Spring और कुछ Java शेड्यूलर सेकंड फ़ील्ड पहले रखते हैं: 0 */5 * * * ? — छह या सात फ़ील्ड। वहाँ पाँच-फ़ील्ड एक्सप्रेशन पेस्ट करने से हर फ़ील्ड एक खिसक जाता है।
- Cloudflare Workers, Kubernetes, GitHub Actions और Vercel स्टैंडर्ड पाँच फ़ील्ड इस्तेमाल करते हैं।
- कुछ सिस्टम @hourly, @daily, @weekly, @monthly और @yearly शॉर्टहैंड स्वीकार करते हैं।
- न्यूनतम रेज़ोल्यूशन एक मिनट है; सब-मिनट शेड्यूल के लिए अलग मैकेनिज़्म चाहिए।
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 के लिए सिस्टम ज़ोन, Kubernetes, GitHub Actions और Cloudflare Workers के लिए UTC। एक्सप्रेशन लिखते समय अपना लोकल समय उस ज़ोन में बदलें।
मेरा cron जॉब क्यों नहीं चलता?
आम वजहें: एक्सप्रेशन गलत ज़ोन में है, पाँच-फ़ील्ड शेड्यूलर को छह-फ़ील्ड एक्सप्रेशन दिया गया (या उल्टा), महीने के दिन और हफ़्ते के दिन फ़ील्ड OR की तरह मिलते हैं, या जॉब चलता है लेकिन चुपचाप फ़ेल होता है — शेड्यूलर के लॉग और नेक्स्ट-रन प्रिव्यू देखें।
इस गाइड में बताए गए टूल्स
cron एक्सप्रेशन विज़ुअल तरीक़े से बनाएँ और अगली रन टाइम पहले से देखें।
किसी भी cron एक्सप्रेशन को आसान भाषा में समझें और आने वाली रन टाइम देखें।
cron एक्सप्रेशन को फ़ील्ड-दर-फ़ील्ड वैलिडेट करें, सटीक एरर संदेशों के साथ।
तारीख़ और समय को अलग-अलग timezone के बीच बदलें (रियाद, अम्मान, दिल्ली, UTC, न्यूयॉर्क, लंदन…)।
Unix epoch सेकंड को पढ़ने योग्य तारीख़ में बदलें और मौजूदा Unix समय पाएँ।