Linux Server Deployment & SSH Mastery · บทเรียน

งานตามกำหนดเวลาด้วย Cron

ทำให้งานเซิร์ฟเวอร์ที่เกิดซ้ำเป็นอัตโนมัติด้วยการสร้างและจัดการงาน cron เพื่อให้สคริปต์และคำสั่งทำงานตามช่วงเวลาที่กำหนด

บทเรียน 3 จาก 412 ขั้นตอน

งานตามกำหนดเวลาด้วย Cron เป็นบทเรียน Linux Server Deployment & SSH Mastery ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Linux Server Deployment & SSH Mastery และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Linux Server Deployment & SSH Mastery มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงควรทำงานบนเซิร์ฟเวอร์โดยอัตโนมัติ

งานที่ทำด้วยตนเองบนเซิร์ฟเวอร์อาจซ้ำซากและมีโอกาสเกิดข้อผิดพลาดจากมนุษย์ การทำงานอัตโนมัติช่วยประหยัดเวลาและทำให้มั่นใจว่างานต่าง ๆ ดำเนินการอย่างสม่ำเสมอ

ลองนึกภาพว่าคุณต้องสำรองฐานข้อมูลทุกคืน หรือลบไฟล์บันทึกเก่าทุกสัปดาห์ การทำสิ่งเหล่านี้ด้วยตนเองทั้งน่าเบื่อและลืมได้ง่าย

เครื่องมือจัดตารางเวลาจึงมีประโยชน์ในกรณีนี้ เครื่องมือเหล่านี้ช่วยให้เซิร์ฟเวอร์ทำงานโดยอัตโนมัติตามเวลาหรือช่วงเวลาที่กำหนด ทำให้คุณมีเวลาไปทำงานที่สำคัญกว่า

ทำความรู้จักกับ Cron: เครื่องมือจัดตารางเวลาของเซิร์ฟเวอร์

Cron เป็นเครื่องมือพื้นฐานใน Linux สำหรับจัดตารางเวลาการทำงานต่าง ๆ เปรียบเสมือนผู้ช่วยส่วนตัวของเซิร์ฟเวอร์ที่ทำให้มั่นใจว่าคำสั่งหรือสคริปต์จะทำงานโดยอัตโนมัติในเบื้องหลังตามเวลาที่กำหนดไว้

งานที่จัดตารางเวลาไว้เหล่านี้เรียกว่า งาน cron ผู้ใช้แต่ละคนในระบบสามารถมีรายการงาน cron ของตนเอง ซึ่งจัดเก็บอยู่ในไฟล์พิเศษที่เรียกว่า crontab

การแก้ไข Crontab ของคุณ

หากต้องการจัดการงาน cron ส่วนตัว ให้ใช้คำสั่ง crontab

  • หากต้องการแก้ไขไฟล์ crontab ให้พิมพ์: crontab -e
  • หากต้องการแสดงรายการงาน cron ปัจจุบัน ให้พิมพ์: crontab -l
  • หากต้องการลบงาน cron ทั้งหมด ให้พิมพ์: crontab -r (โปรดใช้ด้วยความระมัดระวัง!)

เมื่อคุณเรียกใช้ crontab -e ระบบจะเปิด crontab ในโปรแกรมแก้ไขข้อความเริ่มต้นของคุณ ซึ่งมักเป็น nano หรือ vi

ไวยากรณ์ Crontab: ช่องเวลา

แต่ละบรรทัดใน crontab แทนงาน cron หนึ่งงานและใช้รูปแบบเฉพาะ โดยมีช่องเวลาห้าช่อง ตามด้วยคำสั่งที่จะเรียกใช้

รูปแบบคือ:

minute hour day_of_month month day_of_week command
  • นาที: 0-59
  • ชั่วโมง: 0-23 (0 คือเที่ยงคืน)
  • วันของเดือน: 1-31
  • เดือน: 1-12 (หรือ Jan-Dec)
  • วันของสัปดาห์: 0-7 (0 หรือ 7 คือวันอาทิตย์, 1 คือวันจันทร์)

ไวยากรณ์ Crontab: เครื่องหมายดอกจันและช่วง

คุณไม่จำเป็นต้องระบุตัวเลขที่แน่นอนเสมอไป Cron มีอักขระพิเศษเพื่อเพิ่มความยืดหยุ่น:

  • * (เครื่องหมายดอกจัน): ตรงกับค่าที่เป็นไปได้ทุกค่าของช่องนั้น เช่น * ในช่องนาทีหมายถึง "ทุกนาที"
  • - (ยัติภังค์): ระบุช่วง เช่น 9-17 ในช่องชั่วโมงหมายถึง "ชั่วโมงที่ 9 ถึง 17"
  • , (จุลภาค): ระบุรายการค่า เช่น Mon,Wed,Fri หรือ 1,3,5 สำหรับวันของสัปดาห์
  • / (เครื่องหมายทับ): ระบุค่าตามช่วงขั้น เช่น */5 ในช่องนาทีหมายถึง "ทุก 5 นาที"

ไวยากรณ์ Crontab - ตัวอย่างการใช้งานจริง

มาดูตัวอย่างทั่วไปเพื่อช่วยให้คุณเข้าใจได้ชัดเจนยิ่งขึ้น:

  • * * * * * /path/to/script.sh
    ทำงานทุกนาที
  • 0 3 * * * /usr/bin/backup.sh
    ทำงานทุกวันที่เวลา 3:00 AM
  • 0 9-17 * * 1-5 /usr/local/bin/check_service.py
    ทำงานทุกชั่วโมงตั้งแต่ 9 AM ถึง 5 PM ตั้งแต่วันจันทร์ถึงวันศุกร์
  • */15 * * * * echo "Hello, CoddyKit!"
    ทำงานทุก 15 นาที

อย่าลืมแทนที่ /path/to/script.sh ด้วยเส้นทางคำสั่งหรือสคริปต์จริงของคุณ

สตริง Crontab พิเศษ

สำหรับความต้องการจัดตารางเวลาที่พบบ่อยมาก Cron มีสตริงพิเศษที่อ่านง่ายกว่าไวยากรณ์แบบห้าช่อง:

  • @reboot: ทำงานหนึ่งครั้งเมื่อเริ่มระบบ
  • @hourly: ทำงานหนึ่งครั้งต่อชั่วโมงเมื่อเริ่มต้นชั่วโมง
  • @daily: ทำงานหนึ่งครั้งต่อวันในเวลาเที่ยงคืน
  • @weekly: ทำงานหนึ่งครั้งต่อสัปดาห์ในเวลาเที่ยงคืนของวันอาทิตย์
  • @monthly: ทำงานหนึ่งครั้งต่อเดือนในเวลาเที่ยงคืนของวันแรกของเดือน
  • @yearly (หรือ @annually): ทำงานหนึ่งครั้งต่อปีในเวลาเที่ยงคืนของวันที่ 1 มกราคม

สตริงเหล่านี้เหมาะอย่างยิ่งสำหรับงานง่าย ๆ ที่ทำซ้ำเป็นประจำ

ตัวแปรสภาพแวดล้อมและเส้นทาง

เมื่อ cron เรียกใช้งาน จะใช้ตัวแปรสภาพแวดล้อมเพียงชุดเล็กมาก ซึ่งมักหมายความว่าคำสั่งที่ทำงานได้ในเทอร์มินัลของคุณอาจล้มเหลวเมื่อทำงานผ่าน cron

เพื่อหลีกเลี่ยงปัญหา:

  • ใช้ เส้นทางแบบสัมบูรณ์ สำหรับคำสั่งและสคริปต์เสมอ เช่น /usr/bin/php แทน php
  • คุณสามารถกำหนดตัวแปร PATH ไว้ภายในไฟล์ crontab ได้โดยตรง เช่น PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • หรือกำหนดตัวแปรสภาพแวดล้อมโดยตรงภายในสคริปต์

การจัดการผลลัพธ์และการบันทึก

ตามค่าเริ่มต้น cron จะพยายามส่งผลลัพธ์ใด ๆ (เอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐาน) จากงาน cron ทางอีเมลไปยังผู้ใช้ที่เป็นเจ้าของ crontab หากคุณไม่ได้กำหนดค่าระบบอีเมลไว้ ผลลัพธ์นี้อาจสูญหายหรือทำให้ไฟล์บันทึกมีขนาดใหญ่ขึ้น

แนวทางปฏิบัติที่ดีคือเปลี่ยนเส้นทางผลลัพธ์อย่างชัดเจน:

  • หากต้องการทิ้งผลลัพธ์ทั้งหมด: command > /dev/null 2>&1
  • หากต้องการเพิ่มผลลัพธ์ต่อท้ายไฟล์บันทึก: command >> /var/log/myjob.log 2>&1

ส่วน 2>&1 จะเปลี่ยนเส้นทางข้อผิดพลาดมาตรฐาน (2) ไปยังตำแหน่งเดียวกับเอาต์พุตมาตรฐาน (1)

Cron ทั้งระบบเทียบกับ Crontab ของผู้ใช้

เราเน้นที่ crontab ของผู้ใช้ ซึ่งจัดการด้วย crontab -e สิ่งเหล่านี้เหมาะสำหรับงานของผู้ใช้แต่ละคน

สำหรับงานที่ครอบคลุมทั้งระบบ ผู้ดูแลระบบมักใช้:

  • /etc/crontab: crontab หลักของระบบ ซึ่งอนุญาตให้เรียกใช้งานในฐานะผู้ใช้ที่ระบุ
  • /etc/cron.d/: ไดเรกทอรีสำหรับไฟล์ cron แยกต่างหาก ซึ่งมักติดตั้งโดยแอปพลิเคชัน
  • /etc/cron.hourly/, /etc/cron.daily/ เป็นต้น: ไดเรกทอรีที่วางสคริปต์ไว้ เพื่อให้ cron ของระบบเรียกใช้ตามช่วงเวลาที่ระบุ

ตัวเลือกในระดับระบบเหล่านี้ช่วยให้ควบคุมการทำงานอัตโนมัติทั่วทั้งเซิร์ฟเวอร์ได้มากขึ้น

ทดสอบความรู้เกี่ยวกับ Cron

คุณได้เรียนรู้พื้นฐานของไวยากรณ์ crontab แล้ว มาดูกันว่าคุณสามารถถอดความงาน cron นี้ได้หรือไม่

สรุป: ทำงานอัตโนมัติด้วย Cron

ตอนนี้คุณเข้าใจสิ่งสำคัญของการจัดตารางเวลางานด้วย Cron แล้ว

สิ่งที่เราได้กล่าวถึงมีดังนี้:

  • Cron คืออะไร: เครื่องมือจัดตารางเวลางานตามเวลา
  • Crontab: ไฟล์ส่วนตัวสำหรับกำหนดงาน cron
  • ไวยากรณ์: การทำความเข้าใจช่องเวลาทั้ง 5 ช่องและอักขระพิเศษ (*, -, ,, /)
  • สตริงพิเศษ: ทางลัด เช่น @hourly และ @reboot
  • แนวทางปฏิบัติที่ดี: ใช้เส้นทางแบบสัมบูรณ์และจัดการผลลัพธ์

ด้วย Cron คุณสามารถทำงานที่ซ้ำซากให้เป็นอัตโนมัติ เพื่อให้เซิร์ฟเวอร์ทำงานได้อย่างราบรื่นและมีประสิทธิภาพ

เริ่มต้นได้ฟรี

เรียนรู้ Linux Server Deployment & SSH Mastery ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
12
บทเรียน
48

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

บทเรียน “งานตามกำหนดเวลาด้วย Cron” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “งานตามกำหนดเวลาด้วย Cron” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Linux Server Deployment & SSH Mastery ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Linux Server Deployment & SSH Mastery มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “งานตามกำหนดเวลาด้วย Cron”

ทำให้งานเซิร์ฟเวอร์ที่เกิดซ้ำเป็นอัตโนมัติด้วยการสร้างและจัดการงาน cron เพื่อให้สคริปต์และคำสั่งทำงานตามช่วงเวลาที่กำหนด คุณปฏิบัติ Linux Server Deployment & SSH Mastery ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Linux Server Deployment & SSH Mastery หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Linux Server Deployment & SSH Mastery บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “งานตามกำหนดเวลาด้วย Cron” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Linux Server Deployment & SSH Mastery นี้ได้ไหม

ได้ บทเรียน Linux Server Deployment & SSH Mastery ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การจัดการผู้ใช้และกลุ่ม
  2. การตรวจสอบกระบวนการของระบบ
  3. งานตามกำหนดเวลาด้วย Cron
  4. การจัดการบริการระบบด้วย systemd
← กลับไปที่ Linux Server Deployment & SSH Mastery