JustUtils
scheduleLinux cron มาตรฐาน · 5 ช่อง

ตั้งเวลา Cron ทุก 5 นาที

ทำงานที่นาที 0, 5, 10 จนถึง 55 ของทุกชั่วโมง เหมาะกับการตรวจสอบเป็นระยะ ใช้นิพจน์ */5 * * * * ปรับคำสั่งและคัดลอกบรรทัด crontab พร้อมใช้งาน

ตารางเวลาของคุณ

แก้ไขนิพจน์โดยตรง หรือปรับทีละช่อง

lightbulb

คำอธิบายตารางเวลา

ทุก 5 นาที เริ่มจาก 0 ของทุกชั่วโมง ทุกวัน

เวลาทำงาน 5 ครั้งถัดไป

กำลังคำนวณเวลาทำงานครั้งถัดไป…

เริ่มจากตารางเวลาที่ใช้บ่อย

เลือกตารางเวลาเพื่อแทนที่นิพจน์ด้านบน แล้วปรับให้เหมาะกับงาน

บรรทัด cron พร้อมนำไปวาง

เพิ่มคำสั่งที่ต้องการให้ทำงานตามตารางเวลานี้

terminal
*/5 * * * * /usr/local/bin/backup.sh

เคล็ดลับ: ใช้พาธเต็มของสคริปต์และคำสั่ง สภาพแวดล้อมของ cron มีตัวแปรน้อยกว่าเทอร์มินัลของคุณ

warningกฎสำคัญของ cron

เมื่อจำกัดทั้งวันที่ในเดือนและวันในสัปดาห์ cron แบบดั้งเดิมอาจทำงานเมื่อเงื่อนไขใดเงื่อนไขหนึ่งตรงกัน หากต้องการให้ตรงทั้งสองเงื่อนไข ให้ใช้ * ในช่องใดช่องหนึ่ง แล้วตรวจเงื่อนไขเพิ่มเติมในสคริปต์

คำอธิบายแบบเข้าใจง่าย

Crontab คืออะไร?

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

เหมาะกับงานสำรองข้อมูล ส่งรายงาน ล้างข้อมูลชั่วคราว หรือซิงก์ข้อมูล ตารางเวลาระบุว่าจะทำเมื่อไร ส่วนคำสั่งระบุว่าจะทำอะไร

วิธีใช้งานบน Ubuntu

เปิดตารางเวลาส่วนตัว

crontab -e

เลือกโปรแกรมแก้ไขเมื่อเปิดครั้งแรก วางบรรทัด cron บันทึก แล้วออกจากโปรแกรม

แสดงงานที่บันทึกไว้

crontab -l

แสดงตารางเวลาที่ติดตั้งไว้สำหรับผู้ใช้ของคุณ

ลบงานทั้งหมดของคุณ

crontab -r

คำสั่งนี้ลบ crontab ส่วนตัวทั้งหมดทันที โปรดใช้อย่างระมัดระวัง

คำอธิบายทุก 5 นาที

การทำงานของ */5 * * * * เมื่อใช้งานจริง

ทุก 5 นาที เริ่มจาก 0 ของทุกชั่วโมง ทุกวัน ตารางเวลานี้ใช้ cron มาตรฐานแบบ 5 ช่อง และอ้างอิงเขตเวลาของบริการ cron บนเครื่องที่รันงาน

นาที
*/5
เพิ่มทีละ 5 จากค่าต่ำสุดของช่องนาที และเริ่มนับใหม่เมื่อขึ้นรอบถัดไป
ชั่วโมง
*
ใช้ทุกค่าที่อนุญาตในช่องชั่วโมง
วันที่ในเดือน
*
ใช้ทุกค่าที่อนุญาตในช่องวันที่ในเดือน
เดือน
*
ใช้ทุกค่าที่อนุญาตในช่องเดือน
วันในสัปดาห์
*
ใช้ทุกค่าที่อนุญาตในช่องวันในสัปดาห์

ตัวอย่างการใช้งาน

ตัวอย่างงานทุก 5 นาที

ทำงานที่นาที 0, 5, 10 จนถึง 55 ของทุกชั่วโมง เหมาะกับการตรวจสอบเป็นระยะ ลองใช้กับสคริปต์รวบรวมสถานะระบบ โดยบันทึกเวลาเริ่ม ผลลัพธ์ และข้อผิดพลาดทุกครั้ง ตรวจให้แน่ใจว่างานรอบก่อนจบแล้ว หรือใช้กลไกล็อกเพื่อป้องกันการทำงานซ้อนกัน

ก่อนบันทึกการเปลี่ยนแปลง

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

ข้อผิดพลาดที่ควรหลีกเลี่ยง

Cron ไม่ยกเว้นวันหยุดนักขัตฤกษ์โดยอัตโนมัติ หากเครื่องปิดในเวลาที่กำหนด cron ทั่วไปจะไม่รันชดเชย และช่วงเปลี่ยนเวลาออมแสงอาจทำให้งานถูกข้ามหรือรันซ้ำได้ ขึ้นกับระบบที่ใช้งาน

เมื่อใดควรเลือกวิธีอื่น

หากต้องการรันชดเชยเมื่อเปิดเครื่อง ใช้ตัวตั้งเวลาที่รองรับ เช่น systemd timer ที่ตั้งค่า Persistent หากต้องการระยะห่างคงที่นับจากงานจบ ให้ใช้ตัวจัดตารางที่รองรับเงื่อนไขนี้แทนรูปแบบเวลาปฏิทินของ cron

คำอธิบายตัวอย่าง CRONTAB

ตรวจตาราง every 5 minutes กับเขตเวลาและ environment ของเครื่องจริง

ตัวอย่างช่วยเติม Cron Expression ได้รวดเร็ว แต่เวลาที่งานทำงานอ้างอิงเครื่องหรือ container ที่ติดตั้ง crontab ไม่ใช่เวลาของเบราว์เซอร์เสมอ และคำสั่งยังอาจมี PATH ต่างจาก Terminal ที่ใช้งานปกติ

ก่อนบันทึกตัวอย่างนี้

  • อ่านคำอธิบายของทั้งห้าช่องและตรวจเวลาทำงานถัดไปหลายรอบ
  • ยืนยันเขตเวลาด้วยการตั้งค่าของระบบปลายทาง โดยคำนึงถึง daylight saving time หากเกี่ยวข้อง
  • ใช้ path เต็มของโปรแกรม กำหนด working directory และส่ง error ไปยัง log
  • ตรวจรอบแรกจาก system log หรือ output ของงานก่อนถือว่าการตั้งค่าสำเร็จ

ข้อจำกัดของ Cron Expression

Cron แบบมาตรฐานไม่มีวินาทีและไม่รับประกันว่างานรอบก่อนจบก่อนรอบใหม่เริ่ม หากงานใช้เวลานานควรเพิ่ม lock หรือระบบ queue

การพลาดรอบขณะเครื่องปิดมักไม่ถูกทำย้อนหลังโดย cron ปกติ งานที่ต้อง catch up อาจเหมาะกับ systemd timer หรือ scheduler ของระบบมากกว่า