Cron Expression Generator
ভিজ্যুয়াল বিল্ডার দিয়ে সহজেই Cron Expression তৈরি করুন
দ্রুত প্রিসেট
মিনিট
ঘন্টা
মাসের দিন
মাস
সপ্তাহের দিন
Cron এক্সপ্রেশন
0 9 * * *minute hour day(month) month day(week)
Cron Expression Generator কী?
Cron expression generator হল এমন একটি টুল যা ভিজ্যুয়াল ইন্টারফেসের মাধ্যমে cron শিডিউল স্ট্রিং তৈরি করে — হাতে লেখার প্রয়োজন ছাড়াই। Cron expression হল পাঁচ-ক্ষেত্রের স্ট্রিং (মিনিট, ঘন্টা, মাসের দিন, মাস, সপ্তাহের দিন) যা নির্ধারণ করে একটি পুনরাবৃত্তিমূলক কাজ কখন চলবে। এই ফরম্যাটটি ১৯৭৯ সালের মূল Unix cron daemon থেকে উদ্ভূত এবং এখন crontab, Kubernetes CronJobs, GitHub Actions, AWS EventBridge, Google Cloud Scheduler এবং ডজনখানেক জব-শিডিউলিং লাইব্রেরিতে ব্যবহৃত হয়।
স্মৃতি থেকে cron expression লেখা বাগের একটি সাধারণ উৎস। পাঁচটি ক্ষেত্র কিছুটা অপ্রত্যাশিতভাবে পরস্পরের সাথে কাজ করে: মিনিট ক্ষেত্রে */15 স্টেপ মান 0, 15, 30, এবং 45 মিনিটে রান তৈরি করে, আর 5/15 শুরু হয় মিনিট 5 থেকে এবং 5, 20, 35, 50 দেয়। নন-ওয়াইল্ডকার্ড মান দিয়ে day-of-month ও day-of-week একত্রিত করলে AND নয়, OR শর্ত তৈরি হয় — যা অভিজ্ঞ ইঞ্জিনিয়ারদেরও চমকে দেয়। ভিজ্যুয়াল জেনারেটর এই অস্পষ্টতা দূর করে — আপনি কাঙ্ক্ষিত শিডিউল নির্বাচন করুন, সঠিক সিনট্যাক্স স্বয়ংক্রিয়ভাবে তৈরি হয়।
Cron generator এবং cron parser আলাদা। Parser একটি বিদ্যমান expression নিয়ে সহজ ভাষায় ব্যাখ্যা করে। Generator বিপরীত দিকে কাজ করে: আপনি শিডিউলের বিবরণ দেন, টুল মিলে যাওয়া cron স্ট্রিং আউটপুট করে। নতুন শিডিউলড জব তৈরিতে generator ব্যবহার করুন; বিদ্যমান কনফিগারেশন পর্যালোচনা বা ডিবাগিংয়ে parser ব্যবহার করুন।
এই Cron Generator কেন ব্যবহার করবেন?
হাতে cron expression তৈরি করতে ক্ষেত্রের ক্রম, মানের পরিসর এবং অপারেটর নিয়ম মুখস্থ করতে হয়। একটি ভুল স্থানে রাখা ক্ষেত্র দৈনিক জবকে প্রতি মিনিটে চলতে বাধ্য করে। এই generator আপনাকে ভিজ্যুয়ালি শিডিউল নির্বাচন করতে এবং এক ক্লিকে ফলাফল কপি করতে দেয়।
Cron Generator-এর ব্যবহারের ক্ষেত্র
সাধারণ Cron শিডিউল প্রিসেট
নিচের সারণিতে সর্বাধিক ব্যবহৃত শিডিউলের cron expression তালিকাবদ্ধ। অধিকাংশ প্রোডাকশন জব এই প্যাটার্নগুলোর মধ্যে পড়ে। নিজের প্রকৃত টাইমিং অনুযায়ী পৃথক ক্ষেত্র পরিবর্তন করুন।
| শিডিউল | Expression | সাধারণ ব্যবহার |
|---|---|---|
| Every minute | * * * * * | Health checks, queue polling |
| Every 5 minutes | */5 * * * * | Metrics collection, cache refresh |
| Every 15 minutes | */15 * * * * | API sync, dashboard updates |
| Every hour | 0 * * * * | Log rotation, report generation |
| Every 6 hours | 0 */6 * * * | Database backups, digest emails |
| Daily at midnight | 0 0 * * * | Nightly batch jobs, cleanup scripts |
| Daily at 9 AM | 0 9 * * * | Daily reports, notification digests |
| Weekdays at 9 AM | 0 9 * * 1-5 | Business-hours tasks, standup reminders |
| Every Monday at midnight | 0 0 * * 1 | Weekly reports, dependency updates |
| First of every month | 0 0 1 * * | Billing runs, monthly aggregation |
| Every Sunday at 2:30 AM | 30 2 * * 0 | Full backups during low-traffic window |
| January 1st at midnight | 0 0 1 1 * | Annual reports, license renewals |
Cron Expression-এর মূল উপাদান
প্রতিটি cron expression-এ ঠিক পাঁচটি ক্ষেত্র থাকে, বাম থেকে ডানে পড়তে হয়। প্রতিটি ক্ষেত্র নির্দিষ্ট মান ও অপারেটর গ্রহণ করে। এই নিয়মগুলো জানলেই প্রোডাকশনে যেকোনো শিডিউল লেখা সম্ভব।
চারটি অপারেটর নিয়ন্ত্রণ করে প্রতিটি ক্ষেত্রে মান কীভাবে মেলানো হয়। এগুলো একত্রিত করা যায়: day-of-week ক্ষেত্রে 1-5/2 মানে সোমবার, বুধবার, শুক্রবার (রেঞ্জ 1-5, স্টেপ 2)।
| অপারেটর | সিনট্যাক্স | উদাহরণ | ফলাফল |
|---|---|---|---|
| Wildcard | * | * (minute) | Every minute |
| List | a,b,c | 1,15 (day) | 1st and 15th |
| Range | a-b | 9-17 (hour) | 9 AM through 5 PM |
| Step | */n | */10 (minute) | Every 10 minutes |
| Range+Step | a-b/n | 10-30/5 (min) | 10, 15, 20, 25, 30 |
কোড উদাহরণ
Node.js, Python, Go এবং bash-এ cron শিডিউল তৈরি ও নিবন্ধন করার পদ্ধতি:
import { CronJob } from 'cron';
// Build a cron expression: every weekday at 9:00 AM
const expression = '0 9 * * 1-5';
const job = new CronJob(expression, () => {
console.log('Running weekday morning task');
});
job.start();
// Programmatic expression building
function buildCron({ minute = '*', hour = '*', dom = '*', month = '*', dow = '*' }) {
return `${minute} ${hour} ${dom} ${month} ${dow}`;
}
const expr = buildCron({ minute: '0', hour: '*/6', dow: '1-5' });
console.log(expr); // → "0 */6 * * 1-5"from crontab import CronTab
# Create a new cron job for the current user
cron = CronTab(user=True)
# Build a job: run backup.py every day at 2:30 AM
job = cron.new(command='python3 /home/user/backup.py')
job.setall('30 2 * * *')
print(job) # → 30 2 * * * python3 /home/user/backup.py
print(job.is_valid()) # → True
# Schedule every 15 minutes on weekdays
job2 = cron.new(command='/usr/bin/sync-data')
job2.minute.every(15)
job2.dow.during('MON', 'FRI')
cron.write() # Save to user's crontab
# Verify next run time
from croniter import croniter
from datetime import datetime
it = croniter('30 2 * * *', datetime.now())
print(it.get_next(datetime)) # → next 2:30 AM timestamppackage main
import (
"fmt"
"strings"
"github.com/robfig/cron/v3"
)
// BuildCron constructs a 5-field cron expression from parts
func BuildCron(minute, hour, dom, month, dow string) string {
fields := []string{minute, hour, dom, month, dow}
return strings.Join(fields, " ")
}
func main() {
// Generate: every weekday at 9 AM
expr := BuildCron("0", "9", "*", "*", "1-5")
fmt.Println(expr) // → 0 9 * * 1-5
// Validate and schedule it
c := cron.New()
_, err := c.AddFunc(expr, func() {
fmt.Println("Running scheduled task")
})
if err != nil {
fmt.Printf("Invalid expression: %v\n", err)
return
}
c.Start()
}# Open the crontab editor to add a new job crontab -e # Add a cron job without opening an editor: # Run cleanup.sh every Sunday at 3 AM (crontab -l 2>/dev/null; echo "0 3 * * 0 /home/user/cleanup.sh") | crontab - # Generate and add a job: every 10 minutes, log disk usage EXPR="*/10 * * * *" CMD="df -h >> /var/log/disk-usage.log" (crontab -l 2>/dev/null; echo "$EXPR $CMD") | crontab - # Verify the job was added crontab -l | tail -1 # → */10 * * * * df -h >> /var/log/disk-usage.log # Remove all cron jobs (use with caution) # crontab -r