ToolDeck

Cron Expression Parser

Cron এক্সপ্রেশন পার্স করে মানব-পাঠযোগ্য বর্ণনায় রূপান্তর করুন এবং পরবর্তী রান সময় দেখুন

একটি উদাহরণ চেষ্টা করুন

Cron এক্সপ্রেশন

minute hour day(month) month day(week)

মানব-পাঠযোগ্য বর্ণনা

At 9:00 AM, Mon, Tue, Wed, Thu, Fri

ক্ষেত্র বিশ্লেষণ

Minute

0

0–59

Hour

9

0–23

Day (month)

*

1–31

Month

*

1–12

Day (week)

1-5

0–6

পরবর্তী ১০টি নির্ধারিত রান

12026-03-26 09:00:00
22026-03-27 09:00:00
32026-03-30 09:00:00
42026-03-31 09:00:00
52026-04-01 09:00:00
62026-04-02 09:00:00
72026-04-03 09:00:00
82026-04-06 09:00:00
92026-04-07 09:00:00
102026-04-08 09:00:00

Cron Expression Parsing কী?

একটি cron এক্সপ্রেশন হলো স্পেস দ্বারা পৃথক পাঁচটি ক্ষেত্রের একটি স্ট্রিং যা একটি পুনরাবৃত্তিমূলক সময়সূচি নির্ধারণ করে। এই ফরম্যাটটির উৎপত্তি Unix cron daemon-এ, যা Ken Thompson ১৯৭৯ সালে Version 7 Unix-এর জন্য প্রথম লিখেছিলেন। প্রতিটি ক্ষেত্র একটি সময় একক প্রকাশ করে: মিনিট, ঘন্টা, মাসের দিন, মাস এবং সপ্তাহের দিন। একটি cron এক্সপ্রেশন পার্স করা মানে এই সংক্ষিপ্ত নোটেশনকে মানব-পাঠযোগ্য বর্ণনায় এবং আসন্ন কার্যকরী সময়ের একটি সুনির্দিষ্ট তালিকায় রূপান্তরিত করা।

মানক পাঁচ-ক্ষেত্র ফরম্যাটটি Linux এবং macOS-এ crontab, GitHub Actions এবং GitLab CI-এর মতো CI/CD প্ল্যাটফর্ম, AWS (EventBridge), Google Cloud Scheduler এবং Azure Functions-এর ক্লাউড শিডিউলার, এবং প্রতিটি প্রধান প্রোগ্রামিং ভাষার জব-শিডিউলিং লাইব্রেরি ব্যবহার করে। কিছু সিস্টেম সেকেন্ড ক্ষেত্র বা বছর ক্ষেত্র যোগ করে ছয় বা সাত ক্ষেত্রে ফরম্যাট বিস্তৃত করে, কিন্তু POSIX দ্বারা নির্ধারিত পাঁচ-ক্ষেত্র বিন্যাস সকল বাস্তবায়নের ভিত্তি হিসেবে রয়ে যায়।

হাতে cron এক্সপ্রেশন পার্স করা ত্রুটিপ্রবণ। ক্ষেত্রগুলির মধ্যে মিথস্ক্রিয়া অ-সুস্পষ্ট সময়সূচি তৈরি করে: `0 9 1-7 * 1` মানে 'প্রথম সপ্তাহের প্রতি সোমবার' নয়, বরং 'প্রতি মাসের ১ম থেকে ৭ম তারিখ অথবা যেকোনো সোমবার।' একটি cron পার্সার প্রতিটি ক্ষেত্র বিস্তৃত করে, সংমিশ্রণ নিয়ম প্রয়োগ করে এবং জব কখন চালু হবে তার প্রকৃত টাইমস্ট্যাম্প তৈরি করে এই বিভ্রান্তি দূর করে।

কেন এই Cron Parser ব্যবহার করবেন?

একটি কনফিগ ফাইল থেকে `30 */6 1,15 * *`-এর মতো cron এক্সপ্রেশন পড়ে ঠিক কখন এটি চালু হবে তা জানতে পাঁচটি ক্ষেত্র জুড়ে মানসিক গণনা প্রয়োজন। এই পার্সারটি সেই কাজ তাৎক্ষণিকভাবে করে দেয়।

তাৎক্ষণিক পার্সিং
একটি cron এক্সপ্রেশন টাইপ করুন বা পেস্ট করুন এবং সঙ্গে সঙ্গে মানব-পাঠযোগ্য বর্ণনা ও পরবর্তী ১০টি নির্ধারিত রান সময় দেখুন। কোনো সাবমিট বোতাম নেই, কোনো রিলোড নেই।
🔒
গোপনীয়তা-অগ্রাধিকার প্রক্রিয়াকরণ
সমস্ত পার্সিং আপনার ব্রাউজারে স্থানীয়ভাবে চলে। আপনার cron এক্সপ্রেশন ও শিডিউল ডেটা কখনো আপনার ডিভাইস ছেড়ে যায় না।
📋
ক্ষেত্র-অনুযায়ী বিশ্লেষণ
পাঁচটি ক্ষেত্রের প্রতিটি আলাদাভাবে পার্স করা হয় এবং বিস্তারিত মান দেখানো হয়। এক নজরে বুঝুন কোন ক্ষেত্র সময়সূচি নিয়ন্ত্রণ করছে।
🔄
অ্যাকাউন্ট প্রয়োজন নেই
পেজ খুলুন এবং পার্সিং শুরু করুন। কোনো লগইন নেই, কোনো API কী নেই, কোনো ইনস্টলেশন নেই। যেকোনো আধুনিক ব্রাউজার সহ যেকোনো ডিভাইসে কাজ করে।

Cron Parser ব্যবহারের ক্ষেত্র

ফ্রন্টএন্ড ডেভেলপার
অ্যাডমিন ড্যাশবোর্ড এবং শিডিউলিং UI-তে cron এক্সপ্রেশন ব্যাকএন্ডে পাঠানোর আগে যাচাই করুন। ব্যবহারকারী ড্রপডাউনে যে সময়সূচি নির্বাচন করেছেন তা ফর্ম দ্বারা তৈরি cron স্ট্রিংয়ের সাথে মিলছে কিনা নিশ্চিত করুন।
ব্যাকএন্ড ইঞ্জিনিয়ার
অপ্রত্যাশিত সময়ে চালু হওয়া নির্ধারিত জব ডিবাগ করুন। আপনার টাস্ক কিউ কনফিগ (Celery, Sidekiq, Quartz) থেকে cron এক্সপ্রেশন পেস্ট করুন এবং পরবর্তী রান সময় আপনার প্রত্যাশার সাথে মিলছে কিনা পরীক্ষা করুন।
DevOps / SRE
CI/CD পাইপলাইন, Kubernetes CronJobs এবং ক্লাউড শিডিউলার কনফিগে cron সময়সূচি নিরীক্ষা করুন। ব্যাকআপ জব, সার্টিফিকেট নবায়ন এবং পরিষ্কার স্ক্রিপ্ট মোতায়েনের আগে সঠিকভাবে সময় নির্ধারিত হয়েছে কিনা যাচাই করুন।
QA ইঞ্জিনিয়ার
পরীক্ষা পরিবেশে নির্ধারিত কাজগুলো প্রোডাকশন সময়সূচির সাথে মিলছে কিনা যাচাই করুন। মাস বা সপ্তাহের-দিন ক্ষেত্রে এক-ঘর ত্রুটি প্রোডাকশনে মিসড রান ঘটানোর আগেই ধরুন।
ডেটা ইঞ্জিনিয়ার
ETL পাইপলাইন এবং ডেটা সিঙ্ক জবের cron ট্রিগার পরীক্ষা করুন। নিশ্চিত করুন যে নিষ্কাশন উইন্ডোগুলো ওভারল্যাপ না করে এবং ডাউনস্ট্রিম নির্ভরতাগুলোর যথেষ্ট প্রস্তুতির সময় আছে।
শিক্ষার্থী / শিক্ষানবিস
বিভিন্ন এক্সপ্রেশন নিয়ে পরীক্ষা-নিরীক্ষা করে এবং ফলাফল তাৎক্ষণিকভাবে দেখে cron সিনট্যাক্স শিখুন। ওয়াইল্ডকার্ড, রেঞ্জ এবং ধাপ মানগুলো কীভাবে পরস্পর ক্রিয়া করে তার অন্তর্দৃষ্টি তৈরি করুন।

Cron Expression সিনট্যাক্স রেফারেন্স

একটি মানক cron এক্সপ্রেশনে পাঁচটি স্পেস-পৃথক ক্ষেত্র রয়েছে। প্রতিটি ক্ষেত্র পূর্ণসংখ্যা, ওয়াইল্ডকার্ড, রেঞ্জ, তালিকা এবং ধাপ মান গ্রহণ করে। নিচের টেবিলটি প্রতিটি ক্ষেত্রের অনুমোদিত পরিসর ও অপারেটর দেখায়।

ক্ষেত্রপরিসরঅপারেটরবিবরণ
Minute0–59* , - /Minute within the hour
Hour0–23* , - /Hour of the day (24-hour)
Day (month)1–31* , - /Day of the month
Month1–12* , - /Month of the year (or JAN–DEC)
Day (week)0–6* , - /Day of the week (0 = Sunday, or SUN–SAT)

চারটি বিশেষ অক্ষর প্রতিটি ক্ষেত্রে মান মিলানো নিয়ন্ত্রণ করে:

অক্ষরনামআচরণ
*WildcardMatches every possible value in the field. * in the minute field means "every minute."
,ListSeparates individual values. 1,15 in the day field means "the 1st and 15th."
-RangeDefines an inclusive range. 1-5 in the day-of-week field means "Monday through Friday."
/StepDefines an interval. */10 in the minute field means "every 10 minutes." 5/15 means "5, 20, 35, 50."

এখানে সাধারণ cron এক্সপ্রেশন রয়েছে যা বেশিরভাগ শিডিউলিং প্রয়োজন পূরণ করে:

এক্সপ্রেশনসময়সূচি
* * * * *Every minute
0 * * * *Every hour (at minute 0)
*/15 * * * *Every 15 minutes
0 9 * * *Every day at 9:00 AM
0 9 * * 1-5Weekdays at 9:00 AM
30 2 * * 0Every Sunday at 2:30 AM
0 0 1 * *First day of every month at midnight
0 0 * * 1Every Monday at midnight
0 0 1 1 *January 1st at midnight (yearly)
0 */6 * * *Every 6 hours
5,35 * * * *At minute 5 and 35 of every hour
0 9-17 * * 1-5Every hour from 9 AM to 5 PM, weekdays

কোড উদাহরণ

জনপ্রিয় ভাষায় cron এক্সপ্রেশন পার্স এবং পরবর্তী রান সময় গণনা করার পদ্ধতি:

JavaScript (Node.js)
import cronstrue from 'cronstrue';

// Parse cron to human-readable text
cronstrue.toString('0 9 * * 1-5');
// → "At 09:00 AM, Monday through Friday"

cronstrue.toString('*/15 * * * *');
// → "Every 15 minutes"

// Validate with cron-parser and get next run times
import { parseExpression } from 'cron-parser';

const interval = parseExpression('30 2 * * 0');
console.log(interval.next().toISOString());
// → next Sunday at 02:30 UTC

// Iterate over the next 5 runs
for (let i = 0; i < 5; i++) {
  console.log(interval.next().toString());
}
Python
from crontab import CronTab
from croniter import croniter
from datetime import datetime

# Parse and describe a cron expression
cron = CronTab('0 9 * * 1-5')
print(cron.next(default_utc=True))
# → seconds until next run

# Get the next 5 run times with croniter
base = datetime.now()
cron_iter = croniter('0 9 * * 1-5', base)
for _ in range(5):
    print(cron_iter.get_next(datetime))
# → next 5 weekday 09:00 timestamps

# Check if a specific time matches
print(croniter.match('*/15 * * * *', datetime(2026, 3, 25, 10, 30)))
# → True (minute 30 is divisible by 15)
Go
package main

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

func main() {
    // Parse a standard 5-field cron expression
    parser := cron.NewParser(cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow)
    schedule, err := parser.Parse("0 9 * * 1-5")
    if err != nil {
        panic(err)
    }

    // Calculate the next 5 run times
    now := time.Now()
    for i := 0; i < 5; i++ {
        now = schedule.Next(now)
        fmt.Println(now)
    }
    // → next 5 weekday 09:00 timestamps
}
Bash (crontab)
# List current user's cron jobs
crontab -l

# Edit cron jobs interactively
crontab -e

# Add a job: run backup.sh every day at 2:30 AM
# (append to crontab via pipe)
(crontab -l 2>/dev/null; echo "30 2 * * * /home/user/backup.sh") | crontab -

# Check syntax with a dry-run parse (requires cronie or busybox)
# The system will reject invalid expressions when saving

# View cron logs on systemd-based Linux
journalctl -u cron --since "1 hour ago"

প্রায়শই জিজ্ঞাসিত প্রশ্ন

৫-ক্ষেত্র এবং ৬-ক্ষেত্র cron এক্সপ্রেশনের মধ্যে পার্থক্য কী?
মানক (POSIX) cron ফরম্যাটে ৫টি ক্ষেত্র রয়েছে: মিনিট, ঘন্টা, মাসের-দিন, মাস, সপ্তাহের-দিন। Quartz Scheduler এবং Spring-এর মতো কিছু টুল শুরুতে একটি সেকেন্ড ক্ষেত্র যোগ করে, এটিকে ৬ ক্ষেত্র করে তোলে। AWS EventBridge শেষে একটি বছর ক্ষেত্র সহ ৬ ক্ষেত্র ব্যবহার করে। এই পার্সারটি মানক ৫-ক্ষেত্র ফরম্যাট সমর্থন করে, যা crontab, GitHub Actions, Kubernetes CronJobs এবং বেশিরভাগ শিডিউলিং লাইব্রেরির সাথে সামঞ্জস্যপূর্ণ।
মাসের-দিন এবং সপ্তাহের-দিন একসাথে কীভাবে cron পরিচালনা করে?
উভয় ক্ষেত্র সীমাবদ্ধ হলে (* নয়), cron OR যুক্তি ব্যবহার করে: যেকোনো একটি শর্ত সত্য হলে জব চলে। উদাহরণস্বরূপ, `0 9 15 * 1` মানে 'প্রতি মাসের ১৫ তারিখ সকাল ৯:০০-এ অথবা প্রতি সোমবার।' এটি বিভ্রান্তির একটি সাধারণ উৎস। উভয় ক্ষেত্র * হলে জব প্রতিদিন চলে।
Cron কোন টাইমজোন ব্যবহার করে?
ঐতিহ্যবাহী crontab সিস্টেমের স্থানীয় টাইমজোনে চলে। Kubernetes CronJobs kube-controller-manager টাইমজোনে (সাধারণত UTC) ডিফল্ট করে কিন্তু Kubernetes 1.25 থেকে একটি ঐচ্ছিক `.spec.timeZone` ক্ষেত্র সমর্থন করে। AWS EventBridge এবং Google Cloud Scheduler প্রতিটি সময়সূচির জন্য টাইমজোন নির্দিষ্ট করতে দেয়। কোনো cron জব মোতায়েনের আগে সর্বদা পরীক্ষা করুন আপনার শিডিউলার কোন টাইমজোন ব্যবহার করে।
Cron কি প্রতি ৩০ সেকেন্ডে একটি জব চালাতে পারে?
মানক ৫-ক্ষেত্র cron সাব-মিনিট শিডিউলিং সমর্থন করে না। সবচেয়ে ছোট ব্যবধান হলো এক মিনিট (`*/1` বা `*`)। প্রতি ৩০ সেকেন্ডে কিছু চালাতে হলে আপনার প্রয়োজন হয় সেকেন্ড ক্ষেত্র সহ ৬-ক্ষেত্র cron (Quartz, Spring), একটি র‍্যাপার স্ক্রিপ্ট যা ৩০ সেকেন্ড অপেক্ষা করে আবার চলে, অথবা OnCalendar সহ systemd টাইমারের মতো ভিন্ন শিডিউলিং পদ্ধতি।
সপ্তাহের-দিন ক্ষেত্রে ০ এবং ৭ কি একই?
বেশিরভাগ cron বাস্তবায়নে ০ এবং ৭ উভয়ই রবিবার প্রকাশ করে। এই রীতিটি মূল Unix cron থেকে এসেছে। তবে, কিছু সিস্টেম (Quartz) রবিবারের জন্য ১ এবং শনিবারের জন্য ৭ ব্যবহার করে। POSIX পরিসর ০-৬ হিসেবে নির্ধারণ করে যেখানে ০ = রবিবার। আপনার শিডিউলার নামযুক্ত দিন (SUN, MON) গ্রহণ করলে দ্বিধা এড়াতে সেগুলো ব্যবহার করুন।
আমি এমন মাসের-দিন নির্ধারণ করলে কী হয় যা বিদ্যমান নেই?
যদি আপনি ৩১ তারিখের জন্য একটি জব নির্ধারণ করেন (`0 0 31 * *`), তাহলে ৩১ দিনের কম মাসে এটি চলবে না। Cron পরবর্তী মাসে স্থানান্তরিত হয় না। ফেব্রুয়ারি সর্বদা বাদ পড়বে, এবং এপ্রিল, জুন, সেপ্টেম্বর ও নভেম্বরও বাদ পড়বে। প্রতি মাসের শেষ দিনে চালাতে, কিছু cron বাস্তবায়ন L মডিফায়ার সমর্থন করে (`0 0 L * *`), কিন্তু মানক POSIX cron করে না।
মোতায়েনের আগে cron এক্সপ্রেশন কীভাবে পরীক্ষা করব?
পরবর্তী রান সময় দেখতে এবং সময়সূচি আপনার উদ্দেশ্যের সাথে মিলছে কিনা যাচাই করতে এই টুলের মতো একটি অনলাইন পার্সার ব্যবহার করুন। প্রোডাকশন যাচাইয়ের জন্য, বেশিরভাগ cron লাইব্রেরি একটি পরবর্তী-রান গণনা ফাংশন প্রদান করে: Node.js-এ cron-parser, Python-এ croniter, Go-তে robfig/cron। মোতায়েনের আগে পরবর্তী N কার্যকরী সময় নিশ্চিত করতে আপনার পরীক্ষা স্যুটে এর মাধ্যমে এক্সপ্রেশন চালান।