Rain Wiki · Linux

cron และ crontab

วิธีที่ cron ใช้รันงานตามกำหนดการ, ฟิลด์เวลาทั้งห้าของ crontab, ตำแหน่งที่เก็บไฟล์ cron ของระบบ และการเปรียบเทียบกับ systemd timers

Linux · Rain Wiki

cron คือ daemon แบบคลาสสิกของ Unix ที่ทำหน้าที่รันคำสั่งตามกำหนดการ ผู้ใช้แต่ละคนจะมี crontab ซึ่งแก้ไขได้ด้วยคำสั่ง crontab -e โดยแต่ละบรรทัดจะมีฟิลด์เวลาห้าฟิลด์ (นาที, ชั่วโมง, วันของเดือน, เดือน, วันของสัปดาห์) ตามด้วยคำสั่ง งานของระบบจะอยู่ใน /etc/crontab และ /etc/cron.d/

ฟิลด์เวลา

'30 2 * * *' หมายถึง 02:30 น. ทุกวัน; '*/10 * * * *' ทุกสิบนาที; '0 9 * * 1' 09:00 น. ทุกวันจันทร์ วันของสัปดาห์ที่ 0 และ 7 คือวันอาทิตย์

ไฟล์ระบบ

ไฟล์ใน /etc/cron.d/ และ /etc/crontab จะมีฟิลด์เพิ่มเติมคือชื่อผู้ใช้ ระหว่างฟิลด์เวลากับคำสั่ง ไดเรกทอรีเช่น /etc/cron.daily จะเก็บสคริปต์ที่รันวันละครั้ง

ข้อควรระวังทั่วไป

cron รันด้วยสภาพแวดล้อมที่จำกัด: ควรใช้พาธแบบเต็มหรือตั้งค่า PATH ใน crontab ผลลัพธ์จะถูกส่งทางอีเมลถึงเจ้าของหรือสูญหายไป ควรเปลี่ยนเส้นทาง (redirect) ไปยังไฟล์บันทึก (log file) อักขระ % มีความหมายพิเศษในบรรทัด crontab และต้องใช้ \% เพื่อหลีกอักขระ

systemd timers

บนดิสทริบิวชันที่ใช้ systemd หน่วย .timer เป็นทางเลือกหนึ่งที่มีการบันทึกใน journal, มีการหน่วงเวลาแบบสุ่ม และสามารถรันงานที่พลาดไปได้ (Persistent=true)

วิธีเพิ่มงานรายวัน

  1. เปิด crontab ของคุณ: crontab -e
  2. เพิ่มบรรทัด เช่น: 30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
  3. บันทึกและออกจากโปรแกรม; cron จะรับการเปลี่ยนแปลงโดยอัตโนมัติ
  4. แสดงรายการงาน: crontab -l

ข้อควรระวัง

  • 'crontab -r' จะลบ crontab ทั้งหมดโดยไม่มีการยืนยัน
  • ทดสอบคำสั่งด้วยตนเองโดยใช้ผู้ใช้เดียวกันก่อนที่จะกำหนดเวลา

แหล่งอ้างอิง

อัปเดตล่าสุด: 2026-10-08

บทความที่เกี่ยวข้อง