การตั้งเวลางานด้วย Cron
เชี่ยวชาญเครื่องมือ 'cron' เพื่อกำหนดเวลาให้สคริปต์และคำสั่งทำงานโดยอัตโนมัติตามช่วงเวลาหรือเวลาที่ระบุ
การตั้งเวลางานด้วย Cron เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
ทำงานให้เป็นอัตโนมัติด้วย Cron
ยินดีต้อนรับสู่โลกของการทำงานอัตโนมัติ! ในบทเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับ cron เครื่องมืออันทรงพลังใน Linux ที่ช่วยตั้งเวลาให้คำสั่งหรือสคริปต์ทำงานโดยอัตโนมัติตามเวลาที่กำหนด
ลองนึกภาพการตั้งค่าการสำรองข้อมูลรายวันหรือการตรวจสอบระบบทุกชั่วโมงโดยไม่ต้องลงมือทำเอง นั่นคือหน้าที่ของ cron!
ไฟล์ Crontab ส่วนตัวของคุณ
ผู้ใช้แต่ละคนในระบบ Linux จะมีไฟล์ crontab (ตาราง cron) เป็นของตนเอง ไฟล์นี้ใช้เก็บงานทั้งหมดที่ตั้งเวลาไว้
หากต้องการแก้ไข crontab ส่วนตัว ให้ใช้คำสั่ง crontab -e คำสั่งนี้จะเปิดไฟล์ด้วยโปรแกรมแก้ไขข้อความเริ่มต้นของคุณ พร้อมให้เพิ่มงานใหม่
รายการ Crontab: ช่องเวลา
รายการ crontab ประกอบด้วยหกส่วน ห้าส่วนแรกใช้กำหนดเวลาที่คำสั่งจะทำงาน และคั่นด้วยช่องว่าง:
- นาที:
0-59 - ชั่วโมง:
0-23(0 คือเที่ยงคืน) - วันที่ของเดือน:
1-31 - เดือน:
1-12(หรือJan-Dec) - วันในสัปดาห์:
0-7(0 หรือ 7 คือวันอาทิตย์, 1 คือวันจันทร์)
รายการ Crontab: คำสั่ง
ส่วนที่หกและเป็นส่วนสุดท้ายของรายการ crontab คือคำสั่งหรือสคริปต์ที่คุณต้องการเรียกใช้
ในส่วนนี้ ควรใช้พาธแบบเต็มสำหรับคำสั่งและสคริปต์ เช่น /usr/bin/python แทนที่จะใช้เพียง python งานของ Cron ทำงานในสภาพแวดล้อมแบบจำกัด ดังนั้น PATH ที่คุณใช้เป็นประจำอาจไม่พร้อมใช้งาน
อักขระพิเศษใน Crontab
เพื่อทำให้การตั้งเวลายืดหยุ่น cron จึงใช้อักขระพิเศษดังต่อไปนี้:
*(ดอกจัน): ตรงกับค่าที่เป็นไปได้ทั้งหมด เช่น ทุกนาทีหรือทุกชั่วโมง,(จุลภาค): ใช้คั่นรายการค่า เช่น1,15หมายถึงนาทีที่ 1 และ 15-(ยัติภังค์): ใช้กำหนดช่วงค่า เช่น9-17หมายถึงชั่วโมงที่ 9 ถึง 17/(เครื่องหมายทับ): ใช้กำหนดช่วงการเพิ่มค่า เช่น*/10หมายถึงทุก 10 นาที
ทางลัดสำหรับการตั้งเวลาที่กำหนดไว้ล่วงหน้า
สำหรับการตั้งเวลาที่ใช้บ่อย cron มีทางลัดที่สะดวก ซึ่งใช้แทนช่องเวลาห้าช่องแรก:
@reboot: ทำงานหนึ่งครั้งหลังระบบเริ่มต้นใหม่@yearly(หรือ@annually): ทำงานปีละครั้ง (0 0 1 1 *)@monthly: ทำงานเดือนละครั้ง (0 0 1 * *)@weekly: ทำงานสัปดาห์ละครั้ง (0 0 * * 0)@daily(หรือ@midnight): ทำงานวันละครั้ง (0 0 * * *)@hourly: ทำงานชั่วโมงละครั้ง (0 * * * *)
ลงมือทำ: ตั้งเวลาสคริปต์อย่างง่าย
มาสร้างสคริปต์อย่างง่ายที่บันทึกข้อความทักทาย แล้วตั้งเวลาให้ทำงานทุกวันเวลา 10:00 น. กัน
- สร้างสคริปต์ เช่น
~/greet.sh: - ทำให้สคริปต์เรียกใช้ได้:
chmod +x ~/greet.sh - เพิ่มลงใน crontab (
crontab -e):0 10 * * * /home/user/greet.sh
รายการนี้หมายความว่า: ที่นาที 0 ของชั่วโมงที่ 10 (10 นาฬิกา) ทุกวันของเดือน ทุกเดือน และทุกวันในสัปดาห์ ให้เรียกใช้/home/user/greet.sh
#!/bin/bash
# This script logs a greeting to a temporary file.
echo "Hello from Cron! The time is $(date)" >> /tmp/cron_greeting.logจัดการงาน Cron ของคุณ
เมื่อเพิ่มงาน cron แล้ว คุณจะต้องจัดการงานเหล่านั้นดังนี้:
- หากต้องการแสดงรายการใน crontab ปัจจุบัน:
crontab -l - หากต้องการลบรายการทั้งหมดใน crontab (โปรดใช้ด้วยความระมัดระวังอย่างยิ่ง เพราะไม่สามารถย้อนกลับได้!):
crontab -r
หลังแก้ไขทุกครั้ง ควรตรวจสอบ crontab ด้วย crontab -l เพื่อให้แน่ใจว่ารายการต่าง ๆ ถูกต้อง
ตัวแปรสภาพแวดล้อมของ Cron
โปรดจำไว้ว่างาน cron ทำงานในสภาพแวดล้อมแบบจำกัด ซึ่งหมายความว่างานเหล่านี้มักไม่มีตัวแปรสภาพแวดล้อมเดียวกับเชลล์แบบโต้ตอบของคุณ เช่น PATH
หากสคริปต์ของคุณต้องใช้คำสั่งเฉพาะ ให้ใช้พาธแบบเต็มของคำสั่งนั้น หรือกำหนดตัวแปรสภาพแวดล้อมที่จำเป็นไว้โดยตรงด้านบนของไฟล์ crontab เช่น PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
โจทย์ท้าทายไวยากรณ์ Crontab
คุณต้องตั้งเวลาให้สคริปต์ชื่อ /home/user/daily_report.sh ทำงานเวลา 9:15 น. ของทุกวันทำงาน (วันจันทร์ถึงวันศุกร์) รายการ crontab ข้อใดถูกต้อง
สรุป: เชี่ยวชาญการตั้งเวลา Cron
ทำได้ดีมาก! ตอนนี้คุณเข้าใจพื้นฐานของ cron สำหรับการตั้งเวลางานแล้ว
- คุณได้เรียนรู้เกี่ยวกับไฟล์
crontabและวิธีแก้ไขด้วยcrontab -e - คุณเข้าใจช่องทั้งหกของรายการ cron ซึ่งรวมช่องเวลาและคำสั่ง
- คุณได้สำรวจอักขระพิเศษและทางลัดที่กำหนดไว้ล่วงหน้าเพื่อการตั้งเวลาที่ยืดหยุ่น
- คุณรู้วิธีจัดการงานด้วย
crontab -lและcrontab -r - คุณยังได้เรียนรู้ความสำคัญของพาธแบบเต็มและตัวแปรสภาพแวดล้อมในบริบทของ cron
ถึงเวลานำความรู้นี้ไปทำงานให้เป็นอัตโนมัติแล้ว!
คำถามที่พบบ่อย
บทเรียน “การตั้งเวลางานด้วย Cron” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การตั้งเวลางานด้วย Cron” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การตั้งเวลางานด้วย Cron”
เชี่ยวชาญเครื่องมือ 'cron' เพื่อกำหนดเวลาให้สคริปต์และคำสั่งทำงานโดยอัตโนมัติตามช่วงเวลาหรือเวลาที่ระบุ คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การตั้งเวลางานด้วย Cron” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตั้งเวลางานด้วย Cron
- การทำงานดูแลระบบให้เป็นอัตโนมัติ
- โครงงานการเขียนสคริปต์ขั้นสูง
- การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ