คู่มือโดยละเอียดนี้จะอธิบายการใช้คำสั่ง crontab เพื่อจัดตารางงาน (Schedule Tasks) บน Linux/Unix
นอกจากเล่นเกมแล้ว ข้อดีใหญ่ของคอมพิวเตอร์คือไม่เบื่อกับงานน่าเบื่อและซ้ำซากที่เราไม่ muốnทำ เรื่อง مثل การสำรองข้อมูลทุกวัน ควรกำหนดให้รันอัตโนมัติที่เวลาที่กำหนด แล้วค่อยไปทำงานน่าสนใจกว่า Linux และมักมาพร้อมยูทิลิตี้ "crontab" โดยค่าเริ่มต้น คำสั่งนี้ช่วยจัดตารางงานให้รันในเวลาที่กำหนดและทำซ้ำตามที่ตั้งค่า งานที่จัดตารางด้วย crontab เรียกว่า "Cron Job"
ตรวจสอบ Cron Jobs ที่มีอยู่
# crontab -l
ถ้ามีการตั้งค่าจะแสดงประมาณนี้:
0 6 * * * /opt/scripts/backup_script.sh
หมายความ: รันสคริปต์ backup_script.sh ทุกวันเวลา 06:00 น.
โครงสร้าง Crontab (Anatomy)
0 6 * * * /opt/scripts/backup_script.sh | | | | | | | | | └── วันในสัปดาห์ (อาทิตย์=0) | | | └────── เดือนของปี | | └──────── วันของเดือน | └────────── ชั่วโมงของวัน └──────────── นาทีของชั่วโมง
สร้าง/แก้ไข Cron Jobs
# crontab -e
จะเปิด Editor ให้เพิ่ม/แก้/ลบ Cron Jobs
ตัวอย่างการตั้งค่า
- รันทุกวันจันทร์ เวลา 15:45:
45 15 * * 1 /opt/scripts/script.sh - รัน 3 ครั้งต่อวัน (01:00, 09:00, 17:00) ในเดือนก.พ. และ พ.ย.:
0 1,9,17 * 2,11 * /opt/scripts/db_backup_script.sh
สตริงพิเศษ (Special Strings)
Crontab รองรับคำอ่านง่ายแทนตัวเลข:
| สตริง | ความหมาย |
|---|---|
@reboot | รัน 1 ครั้ง เมื่อระบบรีบูท |
@yearly / @annually | รัน 1 ครั้งต่อปี เริ่มต้นปี |
@monthly | รัน 1 ครั้งต่อเดือน เริ่มต้นเดือน |
@weekly | รัน 1 ครั้งต่อสัปดาห์ เริ่มต้นสัปดาห์ |
@daily / @midnight | รัน 1 ครั้งต่อวัน เที่ยงคืน |
@hourly | รันทุกชั่วโมง เริ่มต้นชั่วโมง |
ตัวอย่าง: @midnight /opt/scripts/script.sh = รันทุกคืนเที่ยงคืน (อ่านง่ายกว่า 0 0 * * *)
ช่วงค่า (Ranges)
ใช้ขีดกลาง (-) กำหนดช่วง: 0 1-6 * * * /opt/scripts/script.sh = รันทุกชั่วโมง 01:00-06:00 น.
เคล็ดลับและคำเตือน
- Crontab เป็นเครื่องมือทรงพลัง Sysadmin ทุกคนเชื่อมั่น ใช้ง่ายเมื่อคุ้นเคย
- ใช้อย่างระมัดระวัง การตั้งค่าผิดอาจทำลายระบบ
- อ่าน
man crontabและศึกษาคำสั่งat(สำหรับจัดตารางงานครั้งเดียว) ด้วย