DriteStudioDRITESTUDIODRITESTUDIO
HomeArticlesAbout UsContact
Home
VPSHigh-performance virtual servers with full root access
VPS ForexUltra-low latency VPS optimized for Forex & automated trading
Web HostingManaged hosting with Plesk and free SSL
Game Server HostingSupports 20+ games worldwide. Rent a VPS and tell us which game you want to run.
Dedicated ServersEnterprise hardware with IPMI access
ColocationSecure data center space for your servers
SecurityWAF, DDoS Protection & 24/7 SOC Monitoring
Web DevelopmentCustom website design & development with modern frameworks
SEO ServiceBoost rankings with articles, backlinks & technical SEO
StatusCheck system uptime and service availability
ArticlesAbout UsContact
0%
Cron Jobs คืออะไร วิธีตั้งค่าและแก้ปัญหาบน Linux
Back to articles

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

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

Universal-August 18, 2023-Updated: April 15, 2026

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 พร้อมรองรับทุกความต้องการ ติดต่อทีมงานได้เลย

Share article:
View more articles
D

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

Digital infrastructure provider for VPS, web hosting, and colocation in Thailand

Operated by Craft Intertech (Thailand) Co., Ltd.

© 2026 Craft Intertech (Thailand) Co., Ltd. All rights reserved.

Privacy PolicyTerms of ServiceSystem Status