DriteStudioDRITESTUDIODRITESTUDIO
หน้าแรกบทความเกี่ยวกับเราติดต่อเรา
หน้าแรก
VPSเซิร์ฟเวอร์เสมือนประสิทธิภาพสูง พร้อมสิทธิ์ Root เต็มรูปแบบ
VPS ForexVPS เทรด Forex หน่วงต่ำพิเศษ สำหรับ EA และระบบเทรดอัตโนมัติ
เว็บโฮสติ้งโฮสติ้งพร้อมใช้งาน มี Plesk และ SSL ฟรี
โฮสติ้งเกมเซิร์ฟเวอร์รองรับเกมมากกว่า 20 เกมทั่วโลก เพียงเช่า VPS แล้วแจ้งเกมที่ต้องการติดตั้งกับเรา
เซิร์ฟเวอร์เฉพาะเซิร์ฟเวอร์เฉพาะระดับองค์กร พร้อม IPMI
ฝากวางเซิร์ฟเวอร์ฝากเซิร์ฟเวอร์ในศูนย์ข้อมูลมาตรฐานสากล
ความปลอดภัยWAF ระบบป้องกัน DDoS และ SOC เฝ้าระวังตลอด 24/7
รับทำเว็บไซต์ออกแบบและพัฒนาเว็บไซต์ด้วยเทคโนโลยีสมัยใหม่
บริการ SEOดันอันดับด้วยบทความ Backlink และ Technical SEO
สถานะระบบตรวจสอบสถานะระบบและความพร้อมใช้งาน
บทความเกี่ยวกับเราติดต่อเรา
0%
Cron Jobs คืออะไร วิธีตั้งค่าและแก้ปัญหาบน Linux
กลับหน้ารายการบทความ

Cron Jobs คืออะไร วิธีตั้งค่าและแก้ปัญหาบน Linux

คู่มือ Cron Jobs ฉบับสมบูรณ์ เรียนรู้ Cron Expression ตั้งค่า Backup อัตโนมัติ ล้าง Log ต่ออายุ SSL พร้อมวิธี Debug เมื่อ Cron ไม่ทำงาน

Universal-18 สิงหาคม 2566-อัปเดต: 17 เมษายน 2569

Cron Jobs ตัวช่วยจัดการเซิร์ฟเวอร์อัตโนมัติที่ทุกคนต้องรู้

ลองนึกภาพว่าต้อง Backup ฐานข้อมูลทุกวันตอนตี 2 ล้าง Log ทุกสัปดาห์ และต่ออายุ SSL Certificate ทุกเดือน ถ้าทำมือทุกอย่าง คงเหนื่อยไม่ไหว Cron คือเครื่องมือตั้งเวลาอัตโนมัติบน Linux ที่ช่วยรันคำสั่งหรือสคริปต์ตามเวลาที่กำหนดโดยไม่ต้องนั่งเฝ้า

สำหรับผู้ดูแล VPS หรือ Dedicated Server ของ DriteStudio การใช้ Cron Jobs อย่างมีประสิทธิภาพช่วยลดภาระงาน Routine ได้อย่างมหาศาล

ทำความเข้าใจ Cron Expression

โครงสร้างพื้นฐาน

Cron Expression มี 5 ฟิลด์ เรียงจากซ้ายไปขวา

┌───────────── นาที (0-59)
│ ┌───────────── ชั่วโมง (0-23)
│ │ ┌───────────── วันของเดือน (1-31)
│ │ │ ┌───────────── เดือน (1-12)
│ │ │ │ ┌───────────── วันของสัปดาห์ (0-7, 0 และ 7 = อาทิตย์)
│ │ │ │ │
* * * * * คำสั่งที่ต้องการรัน

ตัวอย่าง Cron Expression ที่ใช้บ่อย

# ทุก 5 นาที
*/5 * * * * /path/to/script.sh

# ทุกชั่วโมง ตรง
0 * * * * /path/to/script.sh

# ทุกวัน ตอนตี 2
0 2 * * * /path/to/script.sh

# ทุกวันจันทร์ถึงศุกร์ ตอน 9 โมงเช้า
0 9 * * 1-5 /path/to/script.sh

# ทุกวันอาทิตย์ ตอนตี 3
0 3 * * 0 /path/to/script.sh

# วันที่ 1 ของทุกเดือน ตอนเที่ยงคืน
0 0 1 * * /path/to/script.sh

# ทุก 30 นาที ในช่วง 9:00-18:00 วันจันทร์ถึงศุกร์
*/30 9-18 * * 1-5 /path/to/script.sh

สัญลักษณ์พิเศษ

เครื่องหมาย * หมายถึงทุกค่า, / ใช้กำหนดช่วง เช่น */5 หมายถึงทุก 5 หน่วย, เครื่องหมาย , แยกค่าหลายค่า เช่น 1,3,5 และ - กำหนดช่วง เช่น 1-5 หมายถึงจันทร์ถึงศุกร์

Shortcut ที่ใช้บ่อย

@reboot    # รันเมื่อเซิร์ฟเวอร์เริ่มทำงาน
@hourly    # รันทุกชั่วโมง (เทียบเท่า 0 * * * *)
@daily     # รันวันละครั้ง (เทียบเท่า 0 0 * * *)
@weekly    # รันสัปดาห์ละครั้ง (เทียบเท่า 0 0 * * 0)
@monthly   # รันเดือนละครั้ง (เทียบเท่า 0 0 1 * *)

วิธีตั้งค่า Cron Jobs

จัดการ Crontab

# แก้ไข Cron Jobs ของ User ปัจจุบัน
crontab -e

# ดูรายการ Cron Jobs ทั้งหมดของ User ปัจจุบัน
crontab -l

# ดู Cron Jobs ของ User อื่น (ต้อง root)
sudo crontab -l -u www-data

# ลบ Cron Jobs ทั้งหมด (ระวัง!)
crontab -r

ใช้ไฟล์ใน /etc/cron.d/

สำหรับ System-level Cron Jobs สร้างไฟล์ใน /etc/cron.d/ รูปแบบคล้าย crontab แต่เพิ่มฟิลด์ Username

# สร้างไฟล์ System Cron Job
sudo nano /etc/cron.d/backup-job

ตัวอย่างเนื้อหาในไฟล์

# Backup ทุกวันตี 2 ด้วย User root
0 2 * * * root /opt/scripts/backup.sh >> /var/log/backup.log 2>&1

ใช้โฟลเดอร์สำเร็จรูป

Linux มีโฟลเดอร์สำหรับรันอัตโนมัติ แค่วางสคริปต์ลงไป

/etc/cron.hourly/    # รันทุกชั่วโมง
/etc/cron.daily/     # รันทุกวัน
/etc/cron.weekly/    # รันทุกสัปดาห์
/etc/cron.monthly/   # รันทุกเดือน

# วางสคริปต์และเพิ่มสิทธิ์ Execute
sudo cp backup.sh /etc/cron.daily/
sudo chmod +x /etc/cron.daily/backup.sh

ตัวอย่าง Cron Jobs ที่ใช้บ่อย

Backup ฐานข้อมูลรายวัน

# Backup MySQL ทุกวันตี 2
0 2 * * * /usr/bin/mysqldump -u root -pYourPassword dbname | gzip > /backup/db_$(date +\%Y\%m\%d).sql.gz 2>> /var/log/backup.log

# Backup PostgreSQL ทุกวันตี 3
0 3 * * * /usr/bin/pg_dump -U postgres dbname | gzip > /backup/pg_$(date +\%Y\%m\%d).sql.gz 2>> /var/log/backup.log

สำหรับเซิร์ฟเวอร์ที่ใช้โฮสติ้งของ DriteStudio การตั้ง Backup อัตโนมัติเป็นสิ่งจำเป็น

ล้าง Log Files อัตโนมัติ

# ลบ Log ที่เก่าเกิน 30 วัน ทุกวันอาทิตย์ตี 4
0 4 * * 0 /usr/bin/find /var/log -name "*.log" -mtime +30 -delete >> /var/log/cleanup.log 2>&1

ต่ออายุ SSL Certificate

# รัน certbot renew ทุกวันตอนตี 3 และ Reload Nginx ถ้าต่ออายุสำเร็จ
0 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx" >> /var/log/certbot.log 2>&1

ตรวจสอบสถานะบริการ

# เช็คว่า Nginx ทำงานอยู่ไหม ทุก 5 นาที ถ้าหยุดก็รีสตาร์ท
*/5 * * * * systemctl is-active --quiet nginx || systemctl restart nginx >> /var/log/nginx-watchdog.log 2>&1

แก้ปัญหา Cron Jobs ที่ไม่ทำงาน

ตรวจสอบ Log

# ดู Cron Log
sudo grep CRON /var/log/syslog | tail -20

# หรือบน CentOS/RHEL
sudo tail -50 /var/log/cron

Path ไม่ถูกต้อง

Cron ทำงานใน Environment ที่จำกัด ต้องใช้ Absolute Path เสมอ

# ผิด - Cron หา php ไม่เจอ
* * * * * php /var/www/script.php

# ถูก - ใช้ Full Path
* * * * * /usr/bin/php /var/www/script.php

# หา Path ของคำสั่งด้วย which
which php
# Output: /usr/bin/php

สิทธิ์และ Environment Variables

# เพิ่มสิทธิ์ Execute ให้สคริปต์
chmod +x /opt/scripts/backup.sh

# กำหนด PATH ใน crontab
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[email protected]

0 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1

Redirect Output เพื่อ Debug

# Redirect ทั้ง stdout และ stderr ไปยังไฟล์ Log
0 2 * * * /opt/scripts/backup.sh >> /var/log/cron-backup.log 2>&1

# ส่งเฉพาะ Error ไปยัง Log
0 2 * * * /opt/scripts/backup.sh > /dev/null 2>> /var/log/cron-error.log

# ปิด Output ทั้งหมด (ไม่แนะนำตอน Debug)
0 2 * * * /opt/scripts/backup.sh > /dev/null 2>&1

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

Cron Job รันได้ถี่สุดแค่ไหน?

ถี่สุดคือทุกนาที (*/1 * * * *) ถ้าต้องการรันถี่กว่านั้น ควรใช้ systemd timer หรือเขียน daemon แทน

Cron Job ทำงานตอนเครื่องปิดอยู่จะเกิดอะไรขึ้น?

Cron Job ที่พลาดไปจะไม่ถูกรันย้อนหลัง ถ้าต้องการรันงานที่พลาดเมื่อเครื่องเปิดขึ้นมา ใช้ Anacron แทน

ทำไม Cron Job ทำงานตอน Login แต่ไม่ทำงานใน crontab?

เป็นเพราะ Environment ต่างกัน Cron ไม่โหลด PATH และ Environment Variables เหมือนตอน Login ใช้ Absolute Path และกำหนด Variables ใน crontab


Cron Jobs เป็นเครื่องมือที่ทรงพลังสำหรับการดูแลเซิร์ฟเวอร์ การเข้าใจ Cron Expression ตั้งค่าถูกต้อง และ Debug ได้เมื่อมีปัญหา ช่วยให้งาน Maintenance ทำงานอัตโนมัติอย่างราบรื่น สำหรับองค์กรที่ต้องการระบบเสถียร Colocation และระบบความปลอดภัยจาก DriteStudio พร้อมรองรับทุกความต้องการ ติดต่อทีมงานได้เลย

แชร์บทความ:
ดูบทความเพิ่มเติม
D

DriteStudio | ไดรท์สตูดิโอ

ผู้ให้บริการโครงสร้างพื้นฐานดิจิทัลสำหรับ VPS เว็บโฮสติ้ง และบริการฝากวางเซิร์ฟเวอร์ในประเทศไทย

ดำเนินการโดย บริษัท คราฟต์ อินเตอร์เทค (ประเทศไทย) จำกัด

© 2026 บริษัท คราฟต์ อินเตอร์เทค (ประเทศไทย) จำกัด สงวนลิขสิทธิ์

นโยบายความเป็นส่วนตัวข้อกำหนดการให้บริการสถานะระบบ