ตัวสร้างนิพจน์ Cron
สร้างนิพจน์ cron ด้วยสายตาโดยใช้ตัวสร้างทีละขั้นตอน
ตั้งค่าเร็ว
นาที
ชั่วโมง
วันในเดือน
เดือน
วันในสัปดาห์
นิพจน์ cron
0 9 * * *minute hour day(month) month day(week)
ตัวสร้างนิพจน์ Cron คืออะไร?
ตัวสร้างนิพจน์ cron คือเครื่องมือที่สร้างสตริงตารางงาน cron ผ่านอินเทอร์เฟซแบบภาพ โดยไม่ต้องเขียนด้วยมือ นิพจน์ cron คือสตริงที่มีห้าช่อง (นาที ชั่วโมง วันในเดือน เดือน วันในสัปดาห์) ที่กำหนดว่างานที่เกิดซ้ำควรทำงานเมื่อใด รูปแบบนี้มีต้นกำเนิดจาก Unix cron daemon ดั้งเดิมในปี 1979 และถูกนำมาใช้ใน crontab, Kubernetes CronJobs, GitHub Actions, AWS EventBridge, Google Cloud Scheduler และไลบรารีจัดตารางงานอีกหลายสิบรายการ
การจำนิพจน์ cron และเขียนเองเป็นแหล่งที่มาของข้อผิดพลาดที่พบบ่อย ห้าช่องมีการทำงานร่วมกันในลักษณะที่ไม่ชัดเจน เช่น ค่า step อย่าง */15 ในช่องนาทีจะสร้างการทำงานที่ 0, 15, 30 และ 45 ในขณะที่ 5/15 เริ่มต้นที่นาทีที่ 5 และให้ค่า 5, 20, 35, 50 การรวม day-of-month และ day-of-week กับค่าที่ไม่ใช่ wildcard จะสร้างเงื่อนไข OR ไม่ใช่ AND ซึ่งทำให้วิศวกรที่มีประสบการณ์แปลกใจได้ ตัวสร้างแบบภาพขจัดความคลุมเครือนี้โดยให้คุณเลือกตารางงานที่ต้องการและสร้างไวยากรณ์ที่ถูกต้องโดยอัตโนมัติ
ตัวสร้าง cron แตกต่างจากตัววิเคราะห์ cron ตัววิเคราะห์รับนิพจน์ที่มีอยู่แล้วอธิบายในภาษาที่อ่านได้ง่าย ส่วนตัวสร้างทำงานในทิศทางตรงข้าม คุณอธิบายตารางงานที่ต้องการ และเครื่องมือจะสร้างสตริง cron ที่ตรงกัน ใช้ตัวสร้างเมื่อสร้างงานตามตารางใหม่ ใช้ตัววิเคราะห์เมื่อตรวจสอบหรือดีบักงานที่มีอยู่
ทำไมต้องใช้ตัวสร้าง Cron นี้?
การสร้างนิพจน์ cron ด้วยมือหมายถึงการจำลำดับช่อง ช่วงค่า และกฎตัวดำเนินการ ช่องที่วางผิดที่เพียงช่องเดียวอาจเปลี่ยนงานรายวันให้กลายเป็นงานที่ทำงานทุกนาที ตัวสร้างนี้ให้คุณเลือกตารางงานแบบภาพและคัดลอกผลลัพธ์ด้วยคลิกเดียว
กรณีการใช้งานตัวสร้าง Cron
ค่าตั้งต้นตารางงาน Cron ที่ใช้บ่อย
ตารางด้านล่างแสดงนิพจน์ cron สำหรับตารางงานที่ใช้บ่อยที่สุด งาน production ส่วนใหญ่จัดอยู่ในรูปแบบเหล่านี้ ปรับแต่งแต่ละช่องให้ตรงกับเวลาที่ต้องการ
| ตารางงาน | นิพจน์ | การใช้งานทั่วไป |
|---|---|---|
| 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 ทุกรายการมีห้าช่องพอดี อ่านจากซ้ายไปขวา แต่ละช่องรับค่าเฉพาะและตัวดำเนินการ การรู้กฎเหล่านี้เพียงพอสำหรับการเขียนตารางงานใดก็ตามที่พบใน production
ตัวดำเนินการสี่ตัวควบคุมวิธีที่ค่าถูกจับคู่ภายในแต่ละช่อง คุณสามารถรวมกันได้: 1-5/2 ในช่องวันในสัปดาห์หมายถึงวันจันทร์ พุธ ศุกร์ (ช่วง 1-5, step 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