การดู : 120

24/04/2026 01:56น.

อินโฟกราฟิกสอนวิธีตั้งค่า Cron Job 5 หลัก สำหรับงาน Automation บน Linux Server - Superdev Academy

ถอดรหัสลับ 5 หลักใน Cron Job: สั่งรัน Backup และ Cleanup อัตโนมัติ (เลิกทำเอง!)

#Cron Job

#Linux Automation

#Crontab

#ตั้งเวลา Backup

#สอน Linux

#Superdev Academy

เบื่อไหมกับงาน Manual ที่ต้องทำซ้ำๆ? ไม่ว่าจะเป็นการตื่นมา Backup Database ตอนตี 3, ส่งอีเมลสรุปยอดตอน 8 โมงเช้า หรือต้องคอยลบไฟล์ Log ขยะทุกเย็นวันศุกร์... งานพวกนี้ถ้าลืมทำแค่วันเดียว 'งานเข้า' แน่นอนครับ

ในฐานะนักพัฒนาหรือคนดูแลระบบ (SysAdmin) เวลาของคุณมีค่ามากกว่าการมานั่งกดคำสั่งเดิมๆ วันนี้ผมจะพาคุณไปทำความรู้จักกับเครื่องมือระดับพื้นฐานแต่ทรงพลังที่สุดในโลกของ Linux นั่นคือ Cron Job เครื่องมือที่จะเปลี่ยนทุกงานที่น่าเบื่อให้กลายเป็นระบบ Automation แบบมืออาชีพ ให้คอมพิวเตอร์ทำงานแทนคุณตลอด 24 ชั่วโมงครับ

1. Cron Job คืออะไร? ทำไมถึงเป็นพ่อบ้านประจำ Server

ถ้าจะให้สรุปให้เห็นภาพที่สุด Cron Job ก็คือ "นาฬิกาปลุกอัจฉริยะ" ในโลกของ Linux และ Unix-like systems ครับ

ปกติเวลาเราตั้งนาฬิกาปลุกในมือถือ เป้าหมายคือการปลุก "คน" ให้ตื่นมาทำหน้าที่บางอย่างใช่ไหมครับ? แต่สำหรับ Cron Job มันคือการสั่งให้ระบบ (ผ่านสิ่งที่เรียกว่า Cron Daemon) ปลุก "Script" หรือ "Command" ให้ลุกขึ้นมาทำงานแทนเราตามเวลาที่กำหนดไว้เป๊ะๆ

ทำไมต้องมีพ่อบ้านคนนี้?

  • ทำงานเบื้องหลัง (Background Task): พ่อบ้านคนนี้ขยันมาก เขาจะเฝ้านาฬิกาให้เราตลอด 24 ชั่วโมง โดยที่เราไม่ต้องเปิดหน้าจอ Terminal ทิ้งไว้

  • แม่นยำระดับนาที: ไม่ว่าจะเป็นงานเล็กๆ อย่างการเคลียร์ไฟล์ขยะ หรือไฟล์ใหญ่ระดับ Backup ฐานข้อมูลข้าม Site เขาก็จัดการให้ได้ไม่มีพลาด

  • รองรับทุกคำสั่ง: ตั้งแต่การรันคำสั่ง Linux พื้นฐาน, การรันไฟล์ Python, Node.js, Go หรือแม้แต่การจัดการ Docker Container ก็สั่งการผ่าน Cron Job ได้ทั้งหมดครับ

2. ถอดรหัส 5 ดอกจัน ( * * * * * ) : อ่านให้ขาดใน 1 นาที

ปัญหาของมือใหม่คือ พ่อบ้าน Cron Job สื่อสารด้วย "รหัสลับ" ครับ เวลาสั่งงานเราต้องพิมพ์ตัวเลขหรือดอกจัน 5 ตำแหน่งเรียงกัน ซึ่งถ้าจำแบบท่องจำอาจจะสับสน แต่ถ้าเข้าใจ "โครงสร้างจากเล็กไปใหญ่" จะจำได้แม่นตลอดกาลครับ

ให้ท่องว่า: "นาที -> ชั่วโมง -> วัน -> เดือน -> สัปดาห์"

ตำแหน่ง

ความหมาย (Field)

ช่วงตัวเลขที่ใช้ได้

ตัวอย่าง/ข้อควรระวัง

1

นาที (Minute)

0 - 59

ถ้าใส่ 30 คือรันตอนนาทีที่ 30

2

ชั่วโมง (Hour)

0 - 23

0 คือเที่ยงคืน, 13 คือบ่ายโมง

3

วันที่ (Day of Month)

1 - 31

ระบุวันที่ต้องการให้ทำงาน

4

เดือน (Month)

1 - 12

1 = มกราคม, 12 = ธันวาคม

5

วันในสัปดาห์ (Day of Week)

0 - 6

0 = วันอาทิตย์, 6 = วันเสาร์

💡 สัญลักษณ์พิเศษที่ต้องรู้ (ช่วยให้เขียนเก่งขึ้น 10 เท่า):

เพื่อให้ AI เข้าใจบริบทการตั้งค่าที่ซับซ้อนขึ้น ควรทำความรู้จักเครื่องหมายเหล่านี้ครับ:

  • * (Asterisk): แปลว่า "ทุกๆ" เช่น ใส่ในช่องชั่วโมง หมายถึง "ทำทุกชั่วโมง"

  • , (Comma): ใช้เลือก "หลายค่า" เช่น 1,3,5 ในช่องวันในสัปดาห์ คือรันเฉพาะ จันทร์, พุธ, ศุกร์

  • - (Hyphen): ใช้ระบุ "ช่วง" เช่น 9-17 ในช่องชั่วโมง คือรันตั้งแต่ 9 โมงเช้า ถึง 5 โมงเย็น

  • / (Slash): ใช้ระบุ "ความถี่" เช่น */15 ในช่องนาที คือรันทุกๆ 15 นาที

3. ตัวช่วยโกงความตาย: Crontab.guru (วุ้นแปลภาษา Cron Job)

ถ้าโจทย์เริ่มยากขึ้น เช่น "อยากรันทุกๆ 15 นาที เฉพาะช่วงบ่าย และต้องข้ามวันเสาร์-อาทิตย์ด้วย" แค่คิดภาพรหัสในหัวสมองก็อาจจะเริ่ม Error ได้ครับ

ผมขอแนะนำพระเอกที่จะช่วยให้คุณรอดตายคือ Crontab.guru เว็บไซต์นี้เปรียบเหมือน "วุ้นแปลภาษาของโดเรม่อน" สำหรับชาว Dev ครับ

ทำไมคุณต้องบันทึกเว็บนี้ลง Bookmarks?

  • Real-time Translation: แค่คุณพิมพ์รหัส 5 หลักลงไป มันจะแปลเป็น "ภาษาอังกฤษที่อ่านง่าย" ให้ทันที (เช่น พิมพ์ */15 13-17 * * 1-5 มันจะบอกคุณทันทีว่านี่คือการรันทุก 15 นาที ในช่วงบ่ายโมงถึง 5 โมงเย็น เฉพาะวันจันทร์ถึงศุกร์)

  • Next Execution: มีฟีเจอร์บอกว่า "ครั้งต่อไป" ที่ระบบจะทำงานคือเมื่อไหร่ ช่วยให้เรา Re-check ความถูกต้องก่อนเอาไปวางบน Server จริง

  • Common Examples: มีปุ่มสุ่มตัวอย่างการตั้งค่าที่พบบ่อย (Examples) ให้เราศึกษาเป็นแนวทางได้ด้วยครับ

Pro Tip: สำหรับใครที่ใช้ VS Code มี Extension ชื่อ "Cron Syntax Highlighter" ช่วยเช็กความถูกต้องเบื้องต้นในหน้า Code Editor ได้เลย ไม่ต้องสลับหน้าจอไปมาครับ

4. Case Study: รวมสถานการณ์ใช้งานจริงแบบมือโปร (Real-world Automation)

การรู้ทฤษฎีนั้นดีครับ แต่การนำไปใช้แก้ปัญหาบน Server จริงคือของจริง! มาดู 2 เคสยอดฮิตที่ชาว Dev และ SysAdmin ต้องเจอครับ

🛠️ Case 1: สั่ง Backup ฐานข้อมูลอัตโนมัติ (ทุกคืนเวลา 21:00 น.)

บน Production Server การ Backup คือหัวใจสำคัญ เรามักจะเตรียม Script (เช่น backup-db.sh) ไว้เพื่อ Dump ข้อมูลออกไปเก็บที่อื่น การตั้งค่าที่เหมาะสมคือช่วงเวลาที่ Traffic ไม่สูงมากครับ

  • รหัส: 0 21 * * *

  • คำสั่ง: /bin/bash /home/user/scripts/backup-db.sh

  • ความหมาย: ทำงานที่นาทีที่ 0 ของชั่วโมงที่ 21 (3 ทุ่มตรง) ของทุกวัน

  • ทำไมต้องเวลานี้? เป็นช่วงที่คนเริ่มใช้งานน้อยลง ลดภาระของ CPU และ Disk I/O ไม่ให้กระทบผู้ใช้งานครับ

🧹 Case 2: จัดการ Disk เต็มด้วย Cleanup Script (ทุกๆ 2 ชั่วโมง)

โดยเฉพาะสาย Docker ที่มักจะเจอปัญหา "Disk บวม" จาก Layer หรือ Log ที่ไม่ได้ใช้ เราควรตั้งรันคำสั่ง Cleanup เพื่อคืนพื้นที่ให้ Server ตลอดวันครับ

  • รหัส: 0 */2 * * *

  • ความหมาย: รันที่นาทีที่ 0 ในทุกๆ 2 ชั่วโมง (เช่น 00:00, 02:00, 04:00 ไปจนถึง 22:00 น.)

  • ทำไมต้องใส่ 0 ข้างหน้า? เพื่อล็อคให้รันที่ "ต้นชั่วโมง" เท่านั้น หากคุณใส่เป็น * */2 * * * พ่อบ้าน Cron จะขยันเกินเหตุและรันคำสั่งทุกๆ นาทีภายในชั่วโมงนั้นแทน ซึ่งอันตรายมากครับ!

💡 Pro Tip: อย่าปล่อยให้ความผิดพลาดเป็นปริศนา!

เวลา Cron Job ทำงานผิดพลาด เรามักจะไม่รู้ตัวเพราะมันทำงานอยู่เบื้องหลัง แนะนำให้ใช้เทคนิคการ Redirect Output เพื่อเก็บ Log ไว้ตรวจสอบย้อนหลังครับ:

0 21 * * * /path/to/script.sh >> /var/log/my-backup.log 2>&1

  • >>: คือการเขียนผลลัพธ์ต่อท้ายไฟล์ Log (Append)

  • 2>&1: คือไม้ตายสำคัญ! มันคือการบอกให้เก็บทั้ง "ข้อความปกติ" และ "ข้อความ Error" ลงในไฟล์เดียวกัน ช่วยให้เรา Debug ได้ทันทีว่าทำไม Backup ถึงล้มเหลวครับ

5. วิธีการติดตั้งและ 3 กฎเหล็ก (The Golden Rules) เพื่อความปลอดภัย

การนำรหัสที่คุณเขียนไปใช้งานบน Server จริงนั้นง่ายมากครับ เพียงเปิด Terminal แล้วพิมพ์คำสั่ง:

Bash

crontab -e

(หากเป็นการใช้งานครั้งแรก ระบบจะให้เลือก Editor แนะนำให้เลือก Nano เพราะใช้งานง่ายที่สุดสำหรับมือใหม่ครับ) จากนั้นก็นำคำสั่งของคุณไปวางที่บรรทัดล่างสุดแล้วกด Save ได้เลย

แต่ช้าก่อน! ก่อนจะ Save และปล่อยให้พ่อบ้านทำงาน มี 3 กฎเหล็ก ที่ถ้าพลาดแม้แต่นิดเดียว Cron Job ของคุณจะเงียบกริบทันทีครับ:

  1. ต้องใช้ Absolute Path เสมอ (สำคัญที่สุด!): พ่อบ้าน Cron Job ไม่ได้มีสภาพแวดล้อม (Environment) เหมือนเวลาเราพิมพ์เองใน Terminal ครับ เขาไม่รู้ว่า python3 หรือ node อยู่ที่ไหน

    • ❌ ห้ามเขียน: python3 myscript.py

    • ✅ ต้องเขียน: /usr/bin/python3 /home/user/scripts/myscript.py

    • 💡 Tip: ใช้คำสั่ง which python3 เพื่อดูที่อยู่เต็มของโปรแกรมนั้นๆ

  2. เปิด Permission ให้เรียบร้อย: หากคุณสั่งให้ Cron Job ไปรัน Script (ไฟล์ .sh หรือ .py) ต้องมั่นใจว่าไฟล์นั้นได้รับอนุญาตให้ "รัน" ได้ โดยการใช้คำสั่ง: chmod +x /path/to/your/script.sh

  3. ทดสอบแบบ Manual ก่อนเสมอ: ก่อนจะฝากความหวังไว้กับระบบอัตโนมัติ ให้ลอง Copy คำสั่งเต็มๆ ที่คุณจะเอาไปใส่ใน Crontab มาลองรันใน Terminal ด้วยตัวเองก่อนว่าทำงานได้ถูกต้องและไม่มี Error โผล่ออกมาครับ


บทสรุป: เริ่มต้นก้าวแรกสู่โลกแห่ง Automation

การตั้งเวลาทำงานอัตโนมัติด้วย Cron Job ไม่ใช่แค่เรื่องของคำสั่งเทคนิคครับ แต่มันคือการ "ซื้อเวลาของคุณคืนมา" เพื่อให้คุณไปโฟกัสกับงานที่สำคัญกว่า หรือได้พักผ่อนในขณะที่ระบบยังคงทำงานได้อย่างแม่นยำ

เพียงแค่เข้าใจ หลักการ 5 ตำแหน่ง และเลือกใช้เครื่องมืออย่าง Crontab.guru มาช่วยตรวจสอบ คุณก็พร้อมที่จะมี "พนักงานส่วนตัว" ที่ซื่อสัตย์ที่สุด คอยดูแล Server ให้ตลอด 24 ชั่วโมง โดยไม่มีคำว่าเหนื่อยหรือลืมแล้วครับ

หากคุณลองตั้งค่าตามแล้วติดปัญหาตรงไหน เจอ Error ที่แก้ไม่ได้ หรืออยากแชร์ไอเดียว่าเอา Cron Job ไปใช้ทำอะไรเจ๋งๆ บ้าง? คอมเมนต์มาคุยกันได้ที่ใต้คลิปต้นฉบับเลยนะครับ ทีมงาน Superdev และเพื่อนๆ พร้อมแลกเปลี่ยนความรู้กันเสมอครับ

ขอให้สนุกกับการสร้างระบบ Automation และเขียนโค้ดอย่างมีความสุขนะครับ! 😊

รับชมวิดีโอสอนแบบเจาะลึกได้ที่นี่: 📺 เครื่องมือลับ Dev! สอนใช้ Cron job สั่งคอมทำงานแทน 24 ชม.

ติดตามความรู้ดีๆ ด้านเทคโนโลยีและการพัฒนาซอฟต์แวร์ได้ที่:

  • 🔵 Facebook: Superdev Academy Thailand (อัปเดตข่าวสารและบทความใหม่)

  • 🎬 YouTube: Superdev Academy Channel (ติวเข้มแบบวิดีโอ)

  • 📸 Instagram: @superdevacademy (เกร็ดความรู้สั้นๆ และเบื้องหลังการทำงาน)

  • 🎬 TikTok: @superdevacademy (Tips & Tricks ฉบับย่อยง่าย)

  • 🌐 Website: superdevacademy.com (คลังบทความและคอร์สเรียนฉบับเต็ม)