ToolDeck

ตัวสร้างนิพจน์ 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 ด้วยมือหมายถึงการจำลำดับช่อง ช่วงค่า และกฎตัวดำเนินการ ช่องที่วางผิดที่เพียงช่องเดียวอาจเปลี่ยนงานรายวันให้กลายเป็นงานที่ทำงานทุกนาที ตัวสร้างนี้ให้คุณเลือกตารางงานแบบภาพและคัดลอกผลลัพธ์ด้วยคลิกเดียว

🖱️
ตัวสร้างตารางงานแบบภาพ
เลือกค่านาที ชั่วโมง วัน เดือน และวันในสัปดาห์จาก dropdown และปุ่มสลับ นิพจน์ cron อัปเดตแบบเรียลไทม์เมื่อคุณเปลี่ยนแต่ละช่อง ไม่ต้องจำไวยากรณ์
🔒
ประมวลผลโดยให้ความเป็นส่วนตัวเป็นหลัก
การสร้างทั้งหมดทำงานในเบราว์เซอร์ของคุณ ไม่มีข้อมูลตารางงานถูกส่งไปยังเซิร์ฟเวอร์ นิพจน์ cron และการตั้งค่างานของคุณอยู่บนอุปกรณ์ของคุณ
ผลลัพธ์ทันทีพร้อมตัวอย่าง
ดูนิพจน์ cron ที่สร้างขึ้นและตัวอย่างเวลาทำงานตามตารางถัดไปขณะสร้าง ยืนยันว่าตารางงานถูกต้องก่อนคัดลอกไปใส่ในการตั้งค่า
📋
ไม่ต้องสร้างบัญชี
เปิดหน้าเว็บแล้วเริ่มสร้างได้เลย ไม่ต้องล็อกอิน ไม่ต้องใช้ API key ไม่ต้องติดตั้ง ใช้ได้บนทุกอุปกรณ์ที่มีเบราว์เซอร์รุ่นใหม่ รวมถึงมือถือ

กรณีการใช้งานตัวสร้าง Cron

นักพัฒนา Frontend
สร้างนิพจน์ cron สำหรับแผงผู้ดูแลระบบและ UI กำหนดตารางงาน สร้างไวยากรณ์ที่ถูกต้องสำหรับตัวเลือกตารางงานที่เปิดให้ผู้ใช้ซึ่งเก็บสตริง cron ในฐานข้อมูล
วิศวกร Backend
สร้างนิพจน์ cron สำหรับ task queues เช่น Celery, Sidekiq และ Bull สร้างสตริงตารางงาน ตรวจสอบเวลาทำงานถัดไป และนำไปใส่ในการตั้งค่างาน
DevOps / SRE
สร้างตาราง cron สำหรับ Kubernetes CronJobs, CI/CD pipelines และการอัตโนมัติโครงสร้างพื้นฐาน สร้างนิพจน์สำหรับช่วงเวลาสำรองข้อมูล การต่ออายุใบรับรอง และการหมุนเวียนบันทึกโดยไม่มีข้อผิดพลาดทางไวยากรณ์
วิศวกร QA
สร้างนิพจน์ cron ทดสอบที่เรียกใช้งานที่ช่วงเวลาเฉพาะสำหรับการทดสอบแบบบูรณาการ สร้างตารางงานที่ให้เวลาทำงานที่คาดเดาได้เพื่อตรวจสอบพฤติกรรมของ scheduler
วิศวกรข้อมูล
สร้างนิพจน์ cron สำหรับ triggers ของ ETL pipeline และตาราง sync ข้อมูล สร้างตารางงานที่ไม่ทับซ้อนกันสำหรับขั้นตอนการดึง แปลง และโหลดข้อมูลด้วยเวลาที่แม่นยำ
นักศึกษา / ผู้เรียน
เรียนรู้ไวยากรณ์ cron โดยทดลองกับตัวสร้างแบบภาพ เปลี่ยนแต่ละช่องและดูว่านิพจน์และเวลาทำงานถัดไปเปลี่ยนอย่างไร สร้างความเข้าใจเกี่ยวกับ wildcards, ranges และ step values

ค่าตั้งต้นตารางงาน 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 hour0 * * * *Log rotation, report generation
Every 6 hours0 */6 * * *Database backups, digest emails
Daily at midnight0 0 * * *Nightly batch jobs, cleanup scripts
Daily at 9 AM0 9 * * *Daily reports, notification digests
Weekdays at 9 AM0 9 * * 1-5Business-hours tasks, standup reminders
Every Monday at midnight0 0 * * 1Weekly reports, dependency updates
First of every month0 0 1 * *Billing runs, monthly aggregation
Every Sunday at 2:30 AM30 2 * * 0Full backups during low-traffic window
January 1st at midnight0 0 1 1 *Annual reports, license renewals

องค์ประกอบของนิพจน์ Cron

นิพจน์ cron ทุกรายการมีห้าช่องพอดี อ่านจากซ้ายไปขวา แต่ละช่องรับค่าเฉพาะและตัวดำเนินการ การรู้กฎเหล่านี้เพียงพอสำหรับการเขียนตารางงานใดก็ตามที่พบใน production

รูปแบบนิพจน์ cron แบบห้าช่อง:
*min0-59
*hour0-23
*day1-31
*month1-12
*weekday0-6

ตัวดำเนินการสี่ตัวควบคุมวิธีที่ค่าถูกจับคู่ภายในแต่ละช่อง คุณสามารถรวมกันได้: 1-5/2 ในช่องวันในสัปดาห์หมายถึงวันจันทร์ พุธ ศุกร์ (ช่วง 1-5, step 2)

ตัวดำเนินการไวยากรณ์ตัวอย่างผลลัพธ์
Wildcard** (minute)Every minute
Lista,b,c1,15 (day)1st and 15th
Rangea-b9-17 (hour)9 AM through 5 PM
Step*/n*/10 (minute)Every 10 minutes
Range+Stepa-b/n10-30/5 (min)10, 15, 20, 25, 30

ตัวอย่างโค้ด

วิธีสร้างและลงทะเบียนตาราง cron ใน Node.js, Python, Go และ bash:

JavaScript (Node.js)
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"
Python
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 timestamp
Go
package 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()
}
Bash (crontab)
# 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

คำถามที่พบบ่อย

ลำดับช่องที่ถูกต้องในนิพจน์ cron คืออะไร?
ลำดับห้าช่องมาตรฐานคือ: นาที (0-59), ชั่วโมง (0-23), วันในเดือน (1-31), เดือน (1-12), วันในสัปดาห์ (0-6 โดย 0 คือวันอาทิตย์) ลำดับนี้กำหนดโดย POSIX และใช้ใน crontab, Kubernetes, GitHub Actions และไลบรารี cron ส่วนใหญ่ บางเครื่องมือเช่น Quartz Scheduler เพิ่มช่องวินาทีที่จุดเริ่มต้น ทำให้เป็นหกช่อง แต่รูปแบบห้าช่องยังคงเป็นค่าเริ่มต้นสากล
จะสร้างนิพจน์ cron สำหรับ 'ทุก N นาที' ได้อย่างไร?
ใช้ตัวดำเนินการ step ในช่องนาที: */N สำหรับทุก 5 นาที ให้เขียน */5 * * * * สำหรับทุก 15 นาที ให้เขียน */15 * * * * ตัวดำเนินการ step หารช่วงของช่องออกอย่างสม่ำเสมอ โปรดทราบว่า */7 ไม่ได้สร้างการทำงานทุก 7 นาทีข้ามขอบเขตชั่วโมง แต่สร้างการทำงานที่นาที 0, 7, 14, 21, 28, 35, 42, 49, 56 แล้วรีเซ็ตเป็น 0 ที่ชั่วโมงถัดไป
สามารถสร้างนิพจน์ cron ที่ทำงานในวันสุดท้ายของทุกเดือนได้ไหม?
POSIX cron มาตรฐานไม่มีตัวดำเนินการ 'วันสุดท้ายของเดือน' คุณไม่สามารถเขียน 0 0 L * * ใน crontab หรือ Kubernetes CronJobs ได้ วิธีแก้ปัญหารวมถึงการกำหนดตารางงานสำหรับวันที่ 28-31 และเพิ่มการตรวจสอบ shell ([ $(date +%d -d tomorrow) -eq 01 ]) หรือใช้การนำ cron แบบขยายเช่น Quartz ที่รองรับ modifier L นิพจน์ rate ของ AWS EventBridge ยังสามารถกำหนดเป้าหมายวันสุดท้ายได้โดยตรง
ความแตกต่างระหว่างตัวสร้าง cron และตัววิเคราะห์ cron คืออะไร?
ตัวสร้าง cron รับความต้องการด้านการกำหนดตารางงานของคุณ (เช่น 'ทุกวันทำงานเวลา 9 โมงเช้า') และสร้างนิพจน์ cron ที่ถูกต้อง (0 9 * * 1-5) ตัววิเคราะห์ cron ทำงานย้อนกลับ รับนิพจน์ที่มีอยู่และสร้างคำอธิบายที่อ่านได้ง่าย ใช้ตัวสร้างเมื่อสร้างตารางงานใหม่ ใช้ตัววิเคราะห์เมื่อตรวจสอบหรือดีบักงานที่มีอยู่
จะหลีกเลี่ยง cron jobs ที่ทับซ้อนกันได้อย่างไร?
Cron เองไม่ป้องกันการทำงานที่ทับซ้อน หากงานที่กำหนดตารางทุกนาทีใช้เวลา 90 วินาที สองอินสแตนซ์จะทับซ้อนกัน เพื่อป้องกันสิ่งนี้ ให้ใช้ lock file (flock ใน bash), distributed lock (Redis, etcd) หรือนโยบายการทำงานพร้อมกันในตัวของ scheduler Kubernetes CronJobs มีฟิลด์ concurrencyPolicy ที่ตั้งเป็น Forbid หรือ Replace ได้ ใน scheduler ระดับแอปพลิเคชันเช่น Celery ให้ใช้ solo pool หรือ lock ระดับงาน
0 หรือ 1 คือวันแรกของสัปดาห์ใน cron?
ใน POSIX cron 0 คือวันอาทิตย์และ 6 คือวันเสาร์ ทั้ง 0 และ 7 แทนวันอาทิตย์ในการนำไปใช้งานส่วนใหญ่ Quartz Scheduler ใช้ข้อตกลงต่างออกไป โดย 1 คือวันอาทิตย์และ 7 คือวันเสาร์ หากระบบของคุณรองรับชื่อวัน (SUN, MON, TUE) ให้ใช้ชื่อเหล่านั้นแทนตัวเลขเพื่อหลีกเลี่ยงความสับสนข้ามแพลตฟอร์ม
จะสร้างนิพจน์ cron สำหรับ timezone เฉพาะได้อย่างไร?
crontab แบบดั้งเดิมใช้ timezone ท้องถิ่นของระบบ คุณสามารถตั้งค่าตัวแปร TZ ในไฟล์ crontab (TZ=America/New_York) บางระบบ Kubernetes CronJobs รองรับฟิลด์ .spec.timeZone ตั้งแต่เวอร์ชัน 1.25 AWS EventBridge และ Google Cloud Scheduler ให้คุณระบุ timezone ต่อตารางงาน ควรบันทึก timezone ที่คาดหวังควบคู่กับนิพจน์ cron ในการตั้งค่าเสมอ