งานตามกำหนดเวลาด้วย Cron
ทำให้งานเซิร์ฟเวอร์ที่เกิดซ้ำเป็นอัตโนมัติด้วยการสร้างและจัดการงาน cron เพื่อให้สคริปต์และคำสั่งทำงานตามช่วงเวลาที่กำหนด
งานตามกำหนดเวลาด้วย 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 AM0 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การจัดการผู้ใช้และกลุ่ม
- การตรวจสอบกระบวนการของระบบ
- งานตามกำหนดเวลาด้วย Cron
- การจัดการบริการระบบด้วย systemd