Cron एक्सप्रेशन सत्यापक

Cron एक्सप्रेशन सत्यापित करें और विस्तृत फील्ड-दर-फील्ड विश्लेषण देखें

उदाहरण देखें

Cron एक्सप्रेशन

minute hour day(month) month day(week)

वैध cron एक्सप्रेशन

फील्ड विश्लेषण

Minute*/15(0–59)

विस्तारित रूप: 0, 15, 30, 45

Hour0-6(0–23)

विस्तारित रूप: 0, 1, 2, 3, 4, 5, 6

Day of month1,15(1–31)

विस्तारित रूप: 1, 15

Month*(1–12)

विस्तारित रूप: all (1–12)

Day of week1-5(0–6)

विस्तारित रूप: 1, 2, 3, 4, 5

Cron एक्सप्रेशन सत्यापन क्या है?

Cron एक्सप्रेशन सत्यापन वह प्रक्रिया है जिसमें यह जाँचा जाता है कि कोई cron स्ट्रिंग शेड्यूलर तक पहुँचने से पहले सही सिंटैक्स नियमों का पालन करती है या नहीं। एक cron एक्सप्रेशन पाँच space-separated फील्ड (मिनट, घंटा, महीने-का-दिन, महीना, सप्ताह-का-दिन) का उपयोग करके एक आवर्ती शेड्यूल परिभाषित करता है। यदि किसी फील्ड में रेंज से बाहर का मान, अमान्य ऑपरेटर, या फील्ड की गलत संख्या जैसी संरचनात्मक त्रुटि हो, तो एक्सप्रेशन या तो डिप्लॉय के समय शेड्यूलर द्वारा अस्वीकार कर दिया जाएगा या चुपचाप किसी भी ट्रिगर समय से मेल नहीं खाएगा।

Cron एक्सप्रेशन ऑनलाइन सत्यापित करने से त्रुटियाँ उत्पादन में डिप्लॉय करने और छूटी हुई जॉब का इंतज़ार करने से पहले ही पकड़ी जा सकती हैं। सामान्य गलतियों में घंटा फील्ड में 25 लिखना (वैध रेंज: 0-23), शून्य का चरण उपयोग करना (*/0, जो अपरिभाषित है), रेंज सीमाओं को उलटना (1-5 की जगह 5-1), या Quartz जैसे गैर-मानक प्रारूपों से संबंधित अतिरिक्त फील्ड जोड़ना शामिल है। एक syntax checker इन समस्याओं को तुरंत चिह्नित करता है और बताता है कि कौन सा फील्ड गलत है।

Cron validation, cron parsing से अलग है। एक पार्सर वैध एक्सप्रेशन लेकर उसे मानव-पठनीय शेड्यूल में बदलता है। एक सत्यापक एक सरल प्रश्न का उत्तर देता है: क्या यह एक्सप्रेशन सही रूप से बना है? पार्स करने से पहले सत्यापित करें — किसी शेड्यूलर को अमान्य एक्सप्रेशन देने का कोई अर्थ नहीं। CI/CD पाइपलाइन में, automated cron validation टूटे हुए शेड्यूल को कॉन्फ़िग फ़ाइलों में विलय होने से रोकता है।

इस Cron सत्यापक का उपयोग क्यों करें?

Cron एक्सप्रेशन में सख्त सिंटैक्स नियम हैं, और शेड्यूलर उन नियमों के उल्लंघन पर inconsistent error messages देते हैं। कुछ शेड्यूलर एक्सप्रेशन को अस्पष्ट त्रुटि के साथ अस्वीकार कर देते हैं; अन्य उसे चुपचाप स्वीकार करते हैं और कभी निष्पादित नहीं करते। यह validator डिप्लॉय करने से पहले clear, फील्ड-दर-फील्ड breakdown देता है।

तत्काल सिंटैक्स जाँच
Cron एक्सप्रेशन चिपकाएँ या टाइप करें और तुरंत देखें कि वह सत्यापन में उत्तीर्ण होता है या नहीं। कोई फ़ॉर्म सबमिशन नहीं, कोई विलंब नहीं। परिणाम टाइप करते ही अपडेट होता है।
🔒
प्राइवेसी-फर्स्ट प्रोसेसिंग
सत्यापन पूरी तरह आपके ब्राउज़र में होता है। आपके cron एक्सप्रेशन और शेड्यूल कॉन्फ़िगरेशन कभी भी किसी सर्वर पर नहीं भेजे जाते और न ही कहीं संग्रहीत होते हैं।
🔍
फील्ड-दर-फील्ड त्रुटि रिपोर्टिंग
जब कोई एक्सप्रेशन अमान्य होता है, तो सत्यापक पहचानता है कि कौन सा फील्ड त्रुटि का कारण बना और क्यों। यह अनुमान लगाने की आवश्यकता नहीं कि पाँच फील्ड में से किसमें समस्या है।
📋
कोई खाता आवश्यक नहीं
पृष्ठ खोलें और जाँच शुरू करें। कोई लॉगिन नहीं, कोई API कुंजी नहीं, कोई इंस्टॉलेशन नहीं। किसी भी आधुनिक ब्राउज़र वाले डिवाइस पर काम करता है, मोबाइल सहित।

Cron सत्यापक के उपयोग के मामले

Frontend Developer
शेड्यूलिंग UI में उपयोगकर्ताओं द्वारा दर्ज cron एक्सप्रेशन को डेटाबेस में सहेजने से पहले सत्यापित करें। बैकएंड अस्वीकृति की प्रतीक्षा करने के बजाय क्लाइंट साइड पर ही सिंटैक्स त्रुटियाँ पकड़ें।
Backend Engineer
कोड समीक्षा के दौरान टास्क क्यू कॉन्फ़िगरेशन (Celery beat, Hangfire, Quartz) में cron एक्सप्रेशन जाँचें। सत्यापित करें कि पुनर्संरचित शेड्यूल स्ट्रिंग अभी भी सिंटैक्स सत्यापन में उत्तीर्ण होती है।
DevOps / SRE
Kubernetes CronJob मैनिफेस्ट और CI/CD पाइपलाइन कॉन्फ़िग में cron शेड्यूल को लागू करने से पहले सत्यापित करें। बैकअप शेड्यूल में टाइपो को छूटे हुए बैकअप तक ध्यान न जाने से रोकें।
QA Engineer
परीक्षण करें कि आपका एप्लिकेशन अमान्य cron इनपुट को सही तरीके से अस्वीकार करता है। ज्ञात गलत एक्सप्रेशन (रेंज से बाहर के मान, गलत फील्ड संख्या) उत्पन्न करें और पुष्टि करें कि त्रुटि हैंडलिंग सही काम करती है।
Data Engineer
Airflow DAG और dbt शेड्यूल्ड रन के लिए cron ट्रिगर सत्यापित करें। पुष्टि करें कि YAML या JSON कॉन्फ़िग फ़ाइलों से पार्स किए गए पाइपलाइन शेड्यूल डिप्लॉय करने से पहले सिंटैक्स की दृष्टि से सही हैं।
छात्र / शिक्षार्थी
Cron सिंटैक्स के साथ प्रयोग करें और तुरंत जानें कि क्या वैध है और क्या नहीं। एक्सप्रेशन test करके और error messages पढ़कर field ranges, operators और edge cases सीखें।

सामान्य Cron सिंटैक्स त्रुटियाँ

नीचे दी गई तालिका में सबसे अधिक होने वाली cron एक्सप्रेशन त्रुटियाँ और उनके कारण सूचीबद्ध हैं। ये वे गलतियाँ हैं जो उत्पादन कॉन्फ़िग और CI/CD पाइपलाइन में बार-बार सामने आती हैं।

त्रुटि का प्रकारउदाहरणक्या गलत हुआ
Too few fields0 9 * *Missing the day-of-week field. Standard cron requires exactly 5 fields.
Too many fields0 0 9 * * 1 2026Extra fields. Some tools add seconds or year, but standard cron uses 5.
Value out of range0 25 * * *Hour field accepts 0-23. Value 25 exceeds the maximum.
Invalid step base0 0 32/2 * *Day-of-month starts at 32, which exceeds the 1-31 range.
Step of zero*/0 * * * *Step value must be 1 or greater. Zero creates an infinite loop.
Empty field0 9 * * 1Double space creates an empty field. Each field needs a value.
Invalid character0 9 * * Mon-FryTypo in day name. Use three-letter abbreviations: MON, TUE, WED, THU, FRI, SAT, SUN.
Reversed range0 9 * * 5-1Range end (1) is less than start (5). Write 1-5 or use a list: 5,6,0,1.

वैध बनाम अमान्य Cron एक्सप्रेशन

सुव्यवस्थित एक्सप्रेशन के साथ सामान्य गलतियों का त्वरित संदर्भ। इसका उपयोग किसी शेड्यूलर कॉन्फ़िग में पेस्ट करने से पहले अपने एक्सप्रेशन की जाँच के लिए करें।

वैध एक्सप्रेशन
* * * * *
0 9 * * 1-5
*/15 * * * *
0 0 1,15 * *
30 2 * * 0
0 */6 * * *
अमान्य एक्सप्रेशन
0 9 * *4 फील्ड हैं, 5 चाहिए
0 25 * * *घंटे की अधिकतम सीमा 23 है
*/0 * * * *चरण 0 नहीं हो सकता
0 9 * * 8सप्ताह-के-दिन की अधिकतम सीमा 6 है
60 * * * *मिनट की अधिकतम सीमा 59 है
0 0 0 * *महीने-के-दिन की न्यूनतम सीमा 1 है

कोड उदाहरण

JavaScript, Python, Go और Bash में Cron एक्सप्रेशन को प्रोग्रामेटिक रूप से कैसे सत्यापित करें। प्रत्येक उदाहरण दिखाता है कि अमान्य सिंटैक्स कैसे पकड़ें और एक सार्थक त्रुटि संदेश कैसे निकालें।

JavaScript (Node.js)
import { parseExpression } from 'cron-parser';

// Validate a cron expression by attempting to parse it
function validateCron(expr) {
  try {
    parseExpression(expr);
    return { valid: true, error: null };
  } catch (err) {
    return { valid: false, error: err.message };
  }
}

console.log(validateCron('0 9 * * 1-5'));
// → { valid: true, error: null }

console.log(validateCron('0 25 * * *'));
// → { valid: false, error: "Constraint error, got value 25 expected range 0-23" }

// Validate with field-level detail using cron-validator
import { isValidCron } from 'cron-validator';

isValidCron('*/15 * * * *');           // → true
isValidCron('*/15 * * * *', { seconds: true }); // → false (expects 6 fields)
isValidCron('0 0 31 2 *');             // → true (syntactically valid, Feb 31 never fires)
Python
from croniter import croniter

# Validate by checking if croniter can parse the expression
def validate_cron(expr: str) -> dict:
    if croniter.is_valid(expr):
        return {"valid": True, "error": None}
    # Get a more specific error message
    try:
        croniter(expr)
    except (ValueError, KeyError) as e:
        return {"valid": False, "error": str(e)}
    return {"valid": False, "error": "Unknown error"}

print(validate_cron("0 9 * * 1-5"))
# → {'valid': True, 'error': None}

print(validate_cron("0 25 * * *"))
# → {'valid': False, 'error': '...out of range...'}

print(validate_cron("* * *"))
# → {'valid': False, 'error': 'Exactly 5 or 6 columns...'}

# Field-level validation
from crontab import CronTab

cron = CronTab(tab="")
job = cron.new(command="/bin/true")
try:
    job.setall("0 9 * * 1-5")
    print(job.is_valid())  # → True
except Exception as e:
    print(f"Invalid: {e}")
Go
package main

import (
    "fmt"
    "github.com/robfig/cron/v3"
)

// ValidateCron checks whether a 5-field cron expression is syntactically correct
func ValidateCron(expr string) (bool, error) {
    parser := cron.NewParser(
        cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow,
    )
    _, err := parser.Parse(expr)
    if err != nil {
        return false, err
    }
    return true, nil
}

func main() {
    exprs := []string{
        "0 9 * * 1-5",   // valid
        "0 25 * * *",    // invalid: hour 25
        "*/15 * * * *",  // valid
        "0 0 32 * *",    // invalid: day 32
    }

    for _, e := range exprs {
        ok, err := ValidateCron(e)
        if ok {
            fmt.Printf("%-20s  VALID
", e)
        } else {
            fmt.Printf("%-20s  INVALID: %v
", e, err)
        }
    }
}
Bash
#!/bin/bash

# Validate cron syntax using Python one-liner
validate_cron() {
  python3 -c "
from croniter import croniter
import sys
expr = sys.argv[1]
if croniter.is_valid(expr):
    print(f'VALID: {expr}')
    sys.exit(0)
else:
    print(f'INVALID: {expr}')
    sys.exit(1)
" "$1"
}

validate_cron "0 9 * * 1-5"     # → VALID: 0 9 * * 1-5
validate_cron "0 25 * * *"      # → INVALID: 0 25 * * *

# Quick regex pre-check (catches field count and obvious issues)
cron_regex='^([0-9*/,-]+\s+){4}[0-9*/,-]+$'
echo "*/5 * * * *" | grep -Eq "$cron_regex" && echo "passes basic check"
echo "* * *" | grep -Eq "$cron_regex" || echo "fails basic check"

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

Cron एक्सप्रेशन अमान्य कब होता है?
Cron एक्सप्रेशन तब अमान्य होता है जब वह पाँच-फील्ड प्रारूप के सिंटैक्स नियम तोड़ता है। सामान्य कारण: फील्ड की गलत संख्या (मानक cron के लिए 5 से कम या अधिक), अनुमत रेंज से बाहर का मान (जैसे घंटा 25, मिनट 60, महीने-का-दिन 0), शून्य का चरण (*/0), उलटी रेंज सीमाएँ (5-1), या अपरिचित वर्ण। एक्सप्रेशन में ठीक पाँच space-separated फील्ड होने चाहिए, प्रत्येक में वैध मान और ऑपरेटर होने चाहिए।
क्या कोई cron एक्सप्रेशन सिंटैक्स की दृष्टि से वैध हो सकता है यदि वह कभी निष्पादित न हो?
हाँ, सिंटैक्स की दृष्टि से। 0 0 31 2 * जैसा एक्सप्रेशन (31 फरवरी) सिंटैक्स सत्यापन में उत्तीर्ण होता है क्योंकि प्रत्येक फील्ड में मान अनुमत रेंज में हैं। लेकिन यह कभी ट्रिगर नहीं होगा क्योंकि फरवरी में कभी 31 दिन नहीं होते। अधिकांश सत्यापक केवल सिंटैक्स जाँचते हैं, अर्थपूर्ण शुद्धता नहीं। यदि आपको अप्राप्य शेड्यूल पकड़ने हैं, तो अगले N रन समय की गणना करें और जाँचें कि सूची रिक्त है या नहीं।
6-फील्ड या 7-फील्ड cron एक्सप्रेशन कैसे सत्यापित करें?
मानक POSIX cron 5 फील्ड उपयोग करता है। Quartz Scheduler आरंभ में seconds फील्ड जोड़ता है (6 फील्ड) और अंत में वैकल्पिक year फील्ड (7 फील्ड)। AWS EventBridge 6 फील्ड उपयोग करता है। यह सत्यापक मानक 5-फील्ड प्रारूप जाँचता है। Quartz या EventBridge एक्सप्रेशन सत्यापित करने के लिए, ऐसी लाइब्रेरी उपयोग करें जो विस्तारित प्रारूप का समर्थन करती हो, जैसे Node.js में extended विकल्प के साथ cron-parser या Java में quartz-cron।
क्या cron एक्सप्रेशन में नामित दिन और महीने उपयोग किए जा सकते हैं?
अधिकांश cron कार्यान्वयन महीनों (JAN-DEC) और सप्ताह के दिनों (SUN-SAT) के लिए तीन-अक्षरी अंग्रेज़ी संक्षेप स्वीकार करते हैं। ये crontab में केस-असंवेदनशील हैं लेकिन अन्य प्रणालियों में केस-संवेदनशील हो सकते हैं। नामित मानों का उपयोग सभी प्लेटफ़ॉर्म पर रेंज में नहीं किया जा सकता: MON-FRI crontab में काम करता है लेकिन हर लाइब्रेरी में नहीं। अगर compatibility ज़रूरी हो, तो numeric values उपयोग करें (सोमवार से शुक्रवार के लिए 1-5)।
मेरा cron एक्सप्रेशन crontab में काम करता है लेकिन Kubernetes में विफल क्यों होता है?
Kubernetes CronJobs crontab जैसा ही 5-फील्ड प्रारूप उपयोग करते हैं लेकिन Go cron लाइब्रेरी द्वारा पार्स किए जाते हैं, जिसमें सख्त सत्यापन है। crontab जो एक्सप्रेशन स्वीकार करता है (जैसे trailing whitespace, या दोनों महीने-का-दिन और सप्ताह-का-दिन गैर-वाइल्डकार्ड मान पर सेट) वे अलग व्यवहार कर सकते हैं। Kubernetes भी controller-manager टाइमज़ोन (आमतौर पर UTC) को डिफ़ॉल्ट रखता है, नोड के स्थानीय टाइमज़ोन को नहीं। एक्सप्रेशन को हमेशा उस विशिष्ट शेड्यूलर के विरुद्ध सत्यापित करें जिसमें आप डिप्लॉय कर रहे हैं।
CI/CD पाइपलाइन में cron एक्सप्रेशन कैसे सत्यापित करें?
एक सत्यापन चरण जोड़ें जो डिप्लॉयमेंट से पहले चले। Node.js प्रोजेक्ट में, एक परीक्षण फ़ाइल में cron-parser या cron-validator उपयोग करें जो आपके कॉन्फ़िग से cron स्ट्रिंग पढ़े और सुनिश्चित करे कि वे बिना त्रुटि के पार्स हों। Python में croniter.is_valid() उपयोग करें। Shell स्क्रिप्ट में, validation function को call करें और failure पर non-zero exit code के साथ बाहर निकलें। इससे उत्पादन में पहुँचने से पहले टाइपो और कॉपी-पेस्ट त्रुटियाँ पकड़ी जाती हैं।
Cron सत्यापन और cron लिंटिंग में क्या अंतर है?
सत्यापन जाँचता है कि एक्सप्रेशन सिंटैक्स की दृष्टि से सही है या नहीं: सही फील्ड संख्या, मान रेंज में, वैध ऑपरेटर। लिंटिंग आगे जाकर तकनीकी रूप से वैध लेकिन संभावित गलतियाँ जाँचती है: ऐसे शेड्यूल जो कभी निष्पादित नहीं होते (31 फरवरी), ओवरलैपिंग जॉब, चरण मान जो अपेक्षित अंतराल छोड़ते हैं (*/7 हर घंटे रीसेट होता है), या टाइमज़ोन दस्तावेज़ीकरण के बिना शेड्यूल। सत्यापन उत्तर देता है 'क्या यह पार्स होगा?' लिंटिंग उत्तर देती है 'क्या यह संभवतः वही है जो आप चाहते थे?'