Cron Job คืออะไร เขียน Expression ยังไงให้ถูก
⏰ Cron คือ Task Scheduler ของ Unix/Linux ที่ใช้กำหนดให้งานรันอัตโนมัติตามเวลา — ตั้งแต่ backup ข้อมูลทุกคืน ไปจนถึง report รายสัปดาห์ Cron Expression ที่เขียนถูกต้องช่วยประหยัดงาน manual ได้มาก
โครงสร้าง Cron Expression
Cron Expression ประกอบด้วย 5 field คั่นด้วยช่องว่าง แต่ละ field แทนค่าเวลาที่แตกต่างกัน:
*
นาที
0–59
0–59
*
ชั่วโมง
0–23
0–23
*
วันที่
1–31
1–31
*
เดือน
1–12
1–12
*
วันสัปดาห์
0–7 (0,7=อา)
0–7 (0,7=อา)
* * * * * = ทุกนาที, ทุกชั่วโมง, ทุกวัน, ทุกเดือน, ทุกวันสัปดาห์
Special Characters ที่ต้องรู้
| Character | ความหมาย | ตัวอย่าง |
|---|---|---|
* | ทุกค่าที่เป็นไปได้ | * * * * * — ทุกนาที |
, | หลายค่า | 0 9,18 * * * — 9:00 และ 18:00 |
- | ช่วงค่า | 0 9 * * 1-5 — 9:00 จ.-ศ. |
/ | ทุกๆ N หน่วย | */15 * * * * — ทุก 15 นาที |
L | วันสุดท้าย (บางระบบ) | 0 0 L * * — วันสุดท้ายของเดือน |
ตัวอย่าง Cron Expression ที่ใช้บ่อย
| Expression | ความหมาย |
|---|---|
0 9 * * 1-5 | 9:00 น. ทุกวันจันทร์–ศุกร์ |
*/15 * * * * | ทุก 15 นาที ตลอดเวลา |
0 0 1 * * | เที่ยงคืนวันที่ 1 ของทุกเดือน |
0 18 * * 5 | 18:00 ทุกวันศุกร์ |
30 7 * * * | 07:30 ทุกวัน |
0 */4 * * * | ทุก 4 ชั่วโมง (00:00, 04:00, 08:00...) |
0 0 * * 0 | เที่ยงคืนทุกวันอาทิตย์ |
0 3 * * * | 03:00 ทุกวัน (เหมาะ backup) |
@shortcuts ที่จำง่ายกว่า
บาง Cron daemon รองรับ Shortcuts แทน Expression:
| Shortcut | เทียบกับ | ความหมาย |
|---|---|---|
@hourly | 0 * * * * | ทุกชั่วโมงตอนต้นชั่วโมง |
@daily | 0 0 * * * | ทุกวัน 00:00 น. |
@weekly | 0 0 * * 0 | ทุกอาทิตย์ 00:00 น. |
@monthly | 0 0 1 * * | วันที่ 1 ของทุกเดือน 00:00 น. |
@reboot | — | รันครั้งเดียวตอน boot |
เคล็ดลับการใช้งาน Cron อย่างถูกต้อง
- ทดสอบ Expression ก่อน deploy: ใช้ Cron Expression Builder เพื่อดูว่า Job จะรันเมื่อไหร่บ้าง
- Redirect output ไปที่ log:
0 * * * * /path/script.sh >> /var/log/cron.log 2>&1 - ระวัง Timezone: Cron ใช้ timezone ของ server — ถ้า server อยู่ UTC ต้องแปลงเวลาเอง
- Path แบบ absolute: Cron ไม่มี PATH เหมือน interactive shell ควรใช้ path เต็มเสมอ
- ทดสอบ script แยก: รัน script ด้วยมือก่อนแน่ใจว่าทำงานถูกต้อง แล้วค่อยใส่ Cron
✅ ใน Linux ดู Cron Job ที่ active ได้ด้วย crontab -l และแก้ไขด้วย crontab -e
🕐 สร้างและทดสอบ Cron Expression
เลือกเวลาที่ต้องการ ระบบสร้าง Cron Expression ให้อัตโนมัติ และแสดงว่า Job จะรันเมื่อไหร่บ้างใน 10 ครั้งถัดไป
เปิด Cron Expression Builder →ฟรี · ไม่ต้องสมัครสมาชิก · คำนวณในเบราว์เซอร์