* * * * * เปิดในเครื่องมือแยกวิเคราะห์ Cron cron มาตรฐานไม่มีฟิลด์วินาที สองบรรทัดนี้ทำให้รันนาทีละสองครั้ง Quartz และ Spring รองรับวินาทีโดยตรง ส่วน Kubernetes และ GitHub Actions รันถี่ขนาดนี้ไม่ได้
ทีละฟิลด์
| ฟิลด์ | ค่า | ตรงกับ |
|---|---|---|
| นาที | * | ทุกค่า |
| ชั่วโมง | * | ทุกค่า |
| วันที่ | * | ทุกค่า |
| เดือน | * | ทุกค่า |
| วันในสัปดาห์ | * | ทุกค่า |
เวลารันครั้งถัดไป
ตัวอย่าง: การรัน 6 ครั้งแรกหลัง 1 มกราคม 2569 (UTC)
- พฤหัส 1 ม.ค. 2569 00:01:00
- พฤหัส 1 ม.ค. 2569 00:01:30
- พฤหัส 1 ม.ค. 2569 00:02:00
- พฤหัส 1 ม.ค. 2569 00:02:30
- พฤหัส 1 ม.ค. 2569 00:03:00
- พฤหัส 1 ม.ค. 2569 00:03:30
เวอร์ชันพร้อมใช้
* * * * * /path/to/command
* * * * * sleep 30; /path/to/command เพิ่มบรรทัดนี้ด้วย crontab -e งานจะรันตามเขตเวลาของเซิร์ฟเวอร์ เว้นแต่ตั้งค่า CRON_TZ หรือ TZ
Kubernetes CronJob: ตัวจัดตารางเวลานี้รันตารางเวลานี้ไม่ได้
GitHub Actions: ตัวจัดตารางเวลานี้รันตารางเวลานี้ไม่ได้
GitHub Actions ใช้ UTC เสมอ รับช่วงห่างตั้งแต่ 5 นาทีขึ้นไป และอาจเริ่มงานตามกำหนดช้าเมื่อระบบมีภาระสูง
0/30 * * * * ? Quartz วางวินาทีไว้หน้าสุด และต้องใส่ ? ในฟิลด์วันที่หรือวันในสัปดาห์ วันในสัปดาห์นับ 1–7 เริ่มจากวันอาทิตย์ จึงควรใช้ชื่อย่อแทน
@Scheduled(cron = "*/30 * * * * *") Spring @Scheduled(cron = …) ใช้หกฟิลด์: วินาที แล้วตามด้วยห้าฟิลด์ปกติ
คำถามที่พบบ่อย
› มีนิพจน์ cron สำหรับทุก 30 วินาทีไหม
ไม่มีใน cron มาตรฐานห้าฟิลด์ ให้ใช้ crontab สองบรรทัด (บรรทัดหนึ่งมี sleep 30), systemd timer ที่ตั้ง OnUnitActiveSec=30s หรือ Quartz 0/30 * * * * ?
› * * * * * รันตามเขตเวลาใด
Cron ใช้เขตเวลาของเครื่องหรือบริการที่รันมัน บน Linux คือเขตเวลาของระบบ เว้นแต่ตั้ง CRON_TZ หรือ TZ; CronJob ของ Kubernetes รองรับ spec.timeZone; GitHub Actions ใช้ UTC เสมอ
› จะตรวจสอบตารางเวลานี้ก่อนนำไปใช้จริงได้อย่างไร
เปิด * * * * * ในเครื่องมือแยกวิเคราะห์ Cron ของเว็บไซต์นี้ เครื่องมือจะอธิบายแต่ละฟิลด์และแสดงเวลารันที่จะมาถึงตามเวลาท้องถิ่นหรือ UTC ทั้งหมดในเบราว์เซอร์