تولیدکننده عبارت Cron
ایجاد عبارات cron به صورت بصری با یک سازنده تعاملی
تنظیمات سریع
دقیقه
ساعت
روز ماه
ماه
روز هفته
عبارت cron
0 9 * * *minute hour day(month) month day(week)
تولیدکننده عبارت Cron چیست؟
تولیدکننده عبارت cron ابزاری است که رشتههای برنامهریزی cron را از طریق یک رابط بصری میسازد تا نیازی به نوشتن دستی آنها نداشته باشید. عبارات cron رشتههای پنجفیلدی هستند (دقیقه، ساعت، روز ماه، ماه، روز هفته) که زمان اجرای یک وظیفه تکرارشونده را تعریف میکنند. این قالب از دیمن cron اصلی Unix در سال ۱۹۷۹ سرچشمه میگیرد و امروزه در crontab، Kubernetes CronJobها، GitHub Actions، AWS EventBridge، Google Cloud Scheduler و دهها کتابخانه زمانبندی کار استفاده میشود.
نوشتن عبارات cron از حفظ یکی از دلایل رایج بروز باگ است. پنج فیلد به روشهای غیرواضحی با هم تعامل دارند: یک مقدار گام مانند */15 در فیلد دقیقه اجراهایی در دقایق ۰، ۱۵، ۳۰ و ۴۵ تولید میکند، در حالی که 5/15 از دقیقه ۵ شروع میشود و دقایق ۵، ۲۰، ۳۵، ۵۰ را میدهد. ترکیب روز ماه و روز هفته با مقادیر غیرwildcard یک شرط OR ایجاد میکند نه AND، که حتی مهندسان باتجربه را غافلگیر میکند. یک تولیدکننده بصری این ابهام را برطرف میکند و به شما امکان میدهد برنامه مورد نظر را انتخاب کرده و نحو صحیح را به صورت خودکار دریافت کنید.
تولیدکننده cron با تجزیهکننده cron تفاوت دارد. یک تجزیهکننده یک عبارت موجود را میگیرد و آن را به زبان ساده توضیح میدهد. یک تولیدکننده در جهت عکس کار میکند: شما برنامه مورد نیاز را توصیف میکنید و ابزار رشته cron متناظر را خروجی میدهد. هنگام ایجاد یک کار زمانبندیشده جدید از تولیدکننده استفاده کنید؛ هنگام بازبینی یا اشکالزدایی کارهای موجود از تجزیهکننده استفاده کنید.
چرا از این تولیدکننده Cron استفاده کنیم؟
ساخت یک عبارت cron به صورت دستی یعنی حفظ کردن ترتیب فیلدها، محدوده مقادیر و قوانین عملگرها. یک فیلد نادرست یک کار روزانه را تبدیل به کاری میکند که هر دقیقه اجرا میشود. این تولیدکننده به شما امکان میدهد برنامه را به صورت بصری انتخاب کرده و نتیجه را با یک کلیک کپی کنید.
موارد استفاده تولیدکننده Cron
تنظیمات رایج برنامه Cron
جدول زیر عبارات cron برای پرکاربردترین برنامهها را فهرست میکند. اکثر کارهای محیط تولید در یکی از این الگوها قرار میگیرند. فیلدهای جداگانه را برای تطابق با زمانبندی واقعی خود تغییر دهید.
| برنامه | عبارت | کاربرد متداول |
|---|---|---|
| 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
هر عبارت cron دقیقاً پنج فیلد دارد که از چپ به راست خوانده میشوند. هر فیلد مقادیر و عملگرهای خاصی را میپذیرد. دانستن این قوانین برای نوشتن هر برنامهای که در محیط تولید با آن روبرو میشوید کافی است.
چهار عملگر نحوه تطبیق مقادیر را در هر فیلد کنترل میکنند. میتوانید آنها را ترکیب کنید: 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 |
نمونههای کد
نحوه ایجاد و ثبت برنامههای cron در Node.js، Python، Go و bash:
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