डेवलपमेंट · 4 मिनट में पढ़ें ·

Cron एक्सप्रेशन आसान भाषा में, 10 तैयार उदाहरणों के साथ

पाँच फ़ील्ड, चार चिह्न और टाइम ज़ोन का एक जाल। कॉपी करने लायक उदाहरणों के साथ cron शेड्यूल पढ़ना और लिखना सीखें।

Cron वह शेड्यूलर है जो दुनिया भर के सर्वरों पर बैकअप, रिपोर्ट और सफ़ाई के काम चलाता है, और इसका सिंटैक्स GitHub Actions, Kubernetes के CronJob और ज़्यादातर क्लाउड शेड्यूलरों में भी दिखता है। एक शेड्यूल में स्पेस से अलग किए गए पाँच फ़ील्ड होते हैं।

┌ मिनट (0-59)
│ ┌ घंटा (0-23)
│ │ ┌ महीने का दिन (1-31)
│ │ │ ┌ महीना (1-12)
│ │ │ │ ┌ हफ़्ते का दिन (0-6, 0 = रविवार)
* * * * *

चार चिह्न

* का मतलब है हर वैल्यू। कॉमा सूची बनाता है (1,15), डैश रेंज बनाता है (1-5) और स्लैश स्टेप बनाता है (*/15 = हर 15 इकाई)। ये चार लगभग हर शेड्यूल के लिए काफ़ी हैं।

10 उदाहरण

*/5 * * * *       हर 5 मिनट
0 * * * *         हर घंटे, ठीक घंटे पर
0 9 * * *         रोज़ 09:00 बजे
30 2 * * *        हर रात 02:30 बजे
0 9 * * 1-5       सोमवार से शुक्रवार 09:00 बजे
0 18 * * 5        हर शुक्रवार 18:00 बजे
0 0 1 * *         हर महीने की 1 तारीख़ को आधी रात
0 0 1 1 *         साल में एक बार, 1 जनवरी
0 */6 * * *       हर 6 घंटे
15 8,12,17 * * *  रोज़ 08:15, 12:15 और 17:15 बजे

जाल 1: महीने का दिन और हफ़्ते का दिन

जब दोनों फ़ील्ड सीमित हों, तो क्लासिक cron जॉब तब चलाता है जब इनमें से कोई भी मेल खाए। 0 0 1 * 1 हर महीने की 1 तारीख़ को और साथ ही हर सोमवार को चलता है, सिर्फ़ उन सोमवारों को नहीं जो 1 तारीख़ को पड़ें।

जाल 2: टाइम ज़ोन

Cron का अपना कोई टाइम ज़ोन नहीं होता। जॉब उस मशीन या सर्विस के टाइम ज़ोन में चलता है जो उसे चलाती है, और वह अक्सर UTC होता है। UTC सर्वर पर 0 9 * * * वाला जॉब 09:00 UTC पर चलता है, जो आपके यहाँ कई घंटे पहले या बाद हो सकता है, और डेलाइट सेविंग टाइम उसे फिर खिसका सकता है।

जाल 3: ओवरलैप होने वाले और छूटे हुए रन

Cron किसी जॉब को तय समय पर शुरू कर देता है, चाहे पिछला रन ख़त्म हुआ हो या नहीं। हर 5 मिनट पर चलने वाला बैकअप जो 7 मिनट लेता है, आख़िरकार एक साथ दो बार चलने लगता है। लंबे जॉब को लॉक में लपेटें (Linux पर flock यह एक लाइन में करता है) या उन्हें समानांतर चलाने के लिए सुरक्षित बनाएँ। Cron छूटे हुए रन की भरपाई भी नहीं करता: अगर 02:30 पर मशीन बंद है, तो उस रात 02:30 वाला जॉब बस नहीं चलेगा।

*/5 * * * *  flock -n /tmp/backup.lock /usr/local/bin/backup.sh

शॉर्टकट और छोटे-मोटे अंतर

कई cron इम्प्लीमेंटेशन पाँच फ़ील्ड की जगह @hourly, @daily, @weekly, @monthly और @reboot जैसे शॉर्टकट स्वीकार करते हैं। ज़्यादातर में रविवार को 0 या 7 लिखा जा सकता है, और MON या JAN जैसे नाम भी चलते हैं। प्लेटफ़ॉर्म बारीकियों में अलग होते हैं, इसलिए जॉब चलाने वाले सिस्टम का डॉक्यूमेंटेशन देखें, ख़ासकर मैनेज्ड क्लाउड शेड्यूलर में।

आउटपुट कहाँ जाता है?

डिफ़ॉल्ट रूप से cron जॉब का आउटपुट लोकल यूज़र को मेल करता है, जिसका ज़्यादातर सर्वरों पर मतलब है कि वह ग़ायब हो जाता है। आउटपुट को किसी लॉग फ़ाइल या अपने लॉगिंग सिस्टम में भेजें, ताकि फ़ेल होने वाला जॉब कोई निशान छोड़े:

30 2 * * *  /usr/local/bin/report.sh >> /var/log/report.log 2>&1

डिप्लॉय से पहले जाँचें

किसी एक्सप्रेशन को 4Dev के Cron एक्सप्रेशन एक्सप्लेनर में पेस्ट करें और यह शेड्यूल आसान भाषा में पढ़कर बताएगा। यह स्टैंडर्ड पाँच-फ़ील्ड फ़ॉर्मेट समझता है; सेकंड या साल वाले छह या सात फ़ील्ड के एक्सप्रेशन, जैसे Quartz या Spring के, एरर के साथ अस्वीकार हो जाते हैं।

Cron एक्सप्रेशन एक्सप्लेनर खोलें

LinkedInXFacebook