ตั้งค่า Cronjob บน DirectAdmin
Cronjob คือการตั้งให้เซิร์ฟเวอร์รันคำสั่งหรือสคริปต์เองตามเวลาที่กำหนด เช่น รันไฟล์ PHP ส่งอีเมลสรุปทุกเช้า ล้างไฟล์ Cache ทุกชั่วโมง หรือเรียก wp-cron.php ของ WordPress ให้ทำงานตรงเวลาแทนการรอผู้เข้าชมเว็บ บน DirectAdmin คุณตั้ง Cronjob ได้จากหน้า Control Panel โดยไม่ต้องใช้ SSH
บทความนี้อธิบายรูปแบบเวลาของ Cron การเพิ่ม Cronjob ใน DirectAdmin แบบ Evolution skin ตัวอย่างคำสั่งที่ใช้บ่อย และวิธีตรวจว่า Cronjob ทำงานจริง หากคุณใช้ Plesk ดูคู่มือ วิธีตั้งค่า Cronjob บน Plesk Control Panel Hosting และหากใช้ Linux Server ที่ไม่มี Control Panel ดู วิธีตั้ง Cronjob หรือ Crontab บน Linux
สิ่งที่ต้องเตรียม
- บัญชี DirectAdmin ระดับ User ที่แพ็กเกจเปิดสิทธิ์ Cronjobs ไว้
- path เต็มของสคริปต์ที่ต้องการรัน เช่น
/home/ชื่อผู้ใช้/domains/example.com/public_html/cron.php - ทดสอบให้แน่ใจก่อนว่าสคริปต์ทำงานถูกต้องเมื่อรันด้วยมือ
ขั้นตอนที่ 1: เข้าใจรูปแบบเวลาของ Cron
Cron ใช้ 5 ช่องกำหนดเวลา เรียงจากซ้ายไปขวาดังนี้
| ช่อง | ความหมาย | ค่าที่ใส่ได้ |
|---|---|---|
| Minute | นาที | 0-59 |
| Hour | ชั่วโมง | 0-23 |
| Day of Month | วันที่ | 1-31 |
| Month | เดือน | 1-12 |
| Day of Week | วันในสัปดาห์ | 0-6 (0 คือวันอาทิตย์) |
เครื่องหมาย * หมายถึงทุกค่า */15 หมายถึงทุก 15 หน่วย 1,15 หมายถึงค่า 1 และ 15 และ 1-5 หมายถึงช่วง 1 ถึง 5 ตัวอย่างที่ใช้บ่อย
| Minute | Hour | Day of Month | Month | Day of Week | ความหมาย |
|---|---|---|---|---|---|
| */5 | * | * | * | * | ทุก 5 นาที |
| 0 | * | * | * | * | ต้นชั่วโมงทุกชั่วโมง |
| 30 | 2 | * | * | * | ทุกวันเวลา 02:30 |
| 0 | 8 | * | * | 1-5 | จันทร์ถึงศุกร์ เวลา 08:00 |
| 0 | 0 | 1 | * | * | วันที่ 1 ของทุกเดือน เวลาเที่ยงคืน |
หมายเหตุ: เวลาของ Cronjob เป็นเวลาตาม Timezone ของเซิร์ฟเวอร์ ไม่ใช่เวลาในเครื่องของคุณ หากเซิร์ฟเวอร์ตั้งเป็น UTC เวลา 02:30 ของ Cron จะตรงกับ 09:30 ตามเวลาประเทศไทย ผู้ที่ดูแลเซิร์ฟเวอร์เองตรวจได้ด้วยคำสั่ง
timedatectl
ขั้นตอนที่ 2: เพิ่ม Cronjob ใน DirectAdmin
- ล็อกอิน DirectAdmin แล้วไปที่หมวด Advanced Features คลิก Cronjobs (หรือพิมพ์ cron ในช่องค้นหาด้านบน)
- คลิก Create Cron Job (บางเวอร์ชันแสดงฟอร์มเพิ่มไว้ที่หน้าเดียวกันเลย)
- กรอก Minute, Hour, Day of Month, Month และ Day of Week ตามตารางในขั้นตอนที่ 1
- ในช่อง Command ใส่คำสั่งเต็ม ตัวอย่างอยู่ในขั้นตอนที่ 3
- หากไม่ต้องการรับอีเมลแจ้งผลทุกครั้งที่ Cron ทำงาน ให้ติ๊ก Prevent E-mail ระบบจะต่อท้ายคำสั่งด้วย
>/dev/null 2>&1ให้ - กด Create
ด้านบนของหน้า Cronjobs มีช่องกำหนดอีเมลที่จะรับผลลัพธ์ (output) ของทุก Cronjob ในบัญชี ในช่วงทดสอบแนะนำให้ใส่อีเมลของคุณและยังไม่ติ๊ก Prevent E-mail เพื่อจะได้เห็นข้อความ Error หากคำสั่งผิด เมื่อแน่ใจว่าทำงานถูกต้องแล้วจึงปิดอีเมล เพื่อไม่ให้กล่องจดหมายเต็ม
ขั้นตอนที่ 3: ตัวอย่างคำสั่งที่ใช้บ่อย
รันไฟล์ PHP
/usr/local/bin/php /home/acme/domains/example.com/public_html/cron.php
บนเซิร์ฟเวอร์ DirectAdmin ส่วนใหญ่ PHP แบบ command-line อยู่ที่ /usr/local/bin/php หากติดตั้ง PHP หลายเวอร์ชัน อาจมี path แยก เช่น /usr/local/php82/bin/php หรือ /usr/local/php83/bin/php ตรวจ path ที่ถูกต้องกับผู้ให้บริการ หรือใช้ SSH ด้วยคำสั่ง ls /usr/local/php*/bin/php เปลี่ยน acme เป็นชื่อผู้ใช้ DirectAdmin ของคุณ
ให้ WordPress รันงานตามเวลาจริง
โดยปกติ WordPress จะเช็กงานที่ตั้งเวลาไว้ (เช่น โพสต์ตั้งเวลา การสำรองข้อมูลของปลั๊กอิน) เฉพาะเมื่อมีคนเปิดเว็บ เว็บที่มีผู้เข้าชมน้อยจึงทำงานไม่ตรงเวลา ให้เพิ่มบรรทัดนี้ใน wp-config.php เหนือบรรทัด /* That's all, stop editing! */
define( 'DISABLE_WP_CRON', true );
แล้วสร้าง Cronjob ทุก 5 หรือ 15 นาที ด้วยคำสั่ง
/usr/local/bin/php /home/acme/domains/example.com/public_html/wp-cron.php
เรียก URL
บางแอปให้เรียก URL แทนการรันไฟล์ ใช้ curl ได้ดังนี้ ใส่ URL ในเครื่องหมายคำพูดเสมอหากมีเครื่องหมาย & หรือ ?
curl -fsS "https://example.com/index.php?option=cron&key=YOUR_KEY" >/dev/null
เก็บผลลัพธ์ลงไฟล์ Log
/usr/local/bin/php /home/acme/domains/example.com/public_html/cron.php >> /home/acme/cron.log 2>&1
วิธีนี้สะดวกกว่าอีเมลเมื่อ Cron รันถี่ เพราะดูย้อนหลังได้ในไฟล์เดียว อย่าลืมลบหรือหมุนเวียนไฟล์ Log เป็นระยะ
หมายเหตุ: ในช่อง Command เครื่องหมาย
%มีความหมายพิเศษสำหรับ Cron (ขึ้นบรรทัดใหม่) หากคำสั่งมี%เช่นdate +%Fต้องเขียนเป็น\%
ตรวจสอบผลลัพธ์
- ในหน้า Cronjobs จะเห็นงานที่สร้างในรายการพร้อมเวลาและคำสั่ง
- ตั้งเวลาเป็นทุก 5 นาทีชั่วคราว แล้วรอให้ถึงรอบ หากไม่ได้ติ๊ก Prevent E-mail และสคริปต์มี output คุณจะได้รับอีเมลจาก Cron Daemon
- ถ้าใช้ไฟล์ Log ให้เปิดไฟล์
cron.logด้วย File Manager แล้วดูว่ามีข้อความเพิ่มตามรอบเวลา - ตรวจผลที่เกิดขึ้นจริง เช่น โพสต์ตั้งเวลาเผยแพร่ตรงเวลา หรือไฟล์สำรองถูกสร้างขึ้น
- เมื่อทดสอบเสร็จ อย่าลืมแก้เวลากลับเป็นค่าที่ต้องการจริง
ปัญหาที่พบบ่อย
ได้อีเมลว่า No such file or directory หรือ command not found
path ของ PHP หรือของสคริปต์ผิด Cron ไม่รู้จัก path สั้นแบบที่ใช้ใน Terminal ให้ใช้ path เต็มทุกครั้ง และตรวจตัวพิมพ์เล็กใหญ่ให้ตรงกับชื่อจริง
สคริปต์รันด้วยมือได้ แต่ใน Cron ไม่ทำงานหรือหาไฟล์ไม่เจอ
Cron ไม่ได้เริ่มทำงานในโฟลเดอร์ของสคริปต์ หากสคริปต์เรียกไฟล์อื่นแบบ path สัมพัทธ์ เช่น include 'config.php' จะหาไม่เจอ ให้แก้สคริปต์ให้ใช้ __DIR__ หรือเขียนคำสั่งเป็น cd /home/acme/domains/example.com/public_html && /usr/local/bin/php cron.php
Cron ทำงานผิดเวลา
เกิดจาก Timezone ของเซิร์ฟเวอร์ต่างจากเวลาไทย ให้คำนวณเวลาใหม่ตาม Timezone ของเซิร์ฟเวอร์ หรือสอบถามผู้ให้บริการว่าเซิร์ฟเวอร์ใช้ Timezone ใด
กล่องอีเมลเต็มไปด้วยอีเมลจาก Cron
ติ๊ก Prevent E-mail ให้ Cronjob นั้น หรือเปลี่ยนไปเก็บผลลัพธ์ลงไฟล์ Log แทน
หากตั้งค่าแล้ว Cronjob ยังไม่ทำงาน ติดต่อทีมงาน THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/ พร้อมแจ้งคำสั่งที่ใช้และข้อความในอีเมลแจ้งผลจาก Cron
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี


