DriteStudioDRITESTUDIODRITESTUDIO
首页文章关于我们联系我们
首页
VPS 云服务器高性能虚拟服务器,提供完整 Root 权限
VPS 外汇交易超低延迟 VPS,专为外汇和自动交易优化
虚拟主机附带 Plesk 和免费 SSL 的虚拟主机
游戏服务器托管支持全球 20+ 款游戏。您可以租用 VPS,并告知我们想要部署的游戏。
独立服务器企业级硬件,支持 IPMI 远程管理
托管服务安全的数据中心机柜空间
安全服务WAF、DDoS 防护与 24/7 SOC 监控
网站开发使用现代框架定制网站设计与开发
SEO 服务通过文章、外链和技术 SEO 提升排名
状态查看系统运行状态和服务可用性
文章关于我们联系我们
0%
Cron Jobs คืออะไร วิธีตั้งค่าและแก้ปัญหาบน Linux
返回文章列表

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

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

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

分享文章:
查看更多文章
D

DriteStudio

提供 VPS、虚拟主机与服务器托管服务的泰国数字基础设施服务商

由 Craft Intertech (Thailand) Co., Ltd. 运营

© 2026 Craft Intertech (Thailand) Co., Ltd. 保留所有权利。

隐私政策服务条款系统状态