การตั้งเวลาใน crontab
rontab มีออฟชันท์การใช้งานหลักๆ ดังต่อไปนี้
  • crontab -e แก้ไข crontab ปัจจุบัน
  • crontab -l ดูคำสั่ง crontab ที่ได้กำหนดไว้ทั้งหมดที่มีอยู่
  • crontab -r ลบคำสั่ง crontab ที่ได้กำหนดไว้ทั้งหมด
  • crontab -u user เป็นคำสั่งของผู้ดูแลระบบใช้งาน เพื่อดูแล crontab ของแต่ละ user สามารถแก้ไขและลบทิ้งได้

สำหรับ crontab -e นั้นเมื่อเรียกใช้งาน โปรแกรมจะเรียกโปรแกรมแก้ไขข้อความ(text editor) ที่เป็นค่าปริยายของระบบขึ้นมาใช้งาน หากท่านใช้งานในสายของ Debian โปรแกรมที่กำหนดไว้โดยปริยายคือ nano หากต้องการใช้ editor ตัวอื่น สามารถทำได้โดยใช้คำสั่ง $ export EDITOR=vim เป็นต้น

crontab ประกอบด้วยกันทั้งหมด 6 คอลัมน์หลักดังต่อไปนี้

m h  dom mon dow   command
  • m หรือ minute มีค่าตั้งแต่ 0-59 เวลาเป็นนาที
  • h หรือ hour มีค่าตั้งแต่ 0-23 เวลาเป็นชั่วโมง
  • dom หรือ day of month หรือวันที่นั้นเอง มีค่าตั่งแต่ 1-31 ตามแต่วันที่ในแต่ละเดือน
  • mon หรือ month มีค่าตั้งแต่ 1-12 เวลาเป็นเดือน
  • dow หรือ day of week มีค่าตั้งแต่ 0-6 วันของแต่ละสัปดาห์ โดยแทนค่าดังต่อไปนี้
    • 0 = วันอาทิตย์
    • 1 = วันจันทร์
    • 2 = วันอังคาร
    • 3 = วันพุธ
    • 4 = วันพฤหัสบดี
    • 5 = วันศุกร์
    • 6 = วันเสาร์
  • command เป็นคำสั่งต่างๆ ที่ต้องการให้ให้เอ็กซีคิวสามารถใช้ได้ทั้งคำสั่งและสคริปท์

แต่ละคอลัมน์แบ่งออกจากันด้วยช่องว่าง(space) หรือแท็บ(ปุ่ม Tab บนคีย์บอร์ด) ยกเว้นคอลัมน์สุดท้ายจะถือว่าทั้งหมดเป็นส่วนของคำสั่ง นอกจากนี้หากต้องการแทนความหมายว่าทุกๆ ก็สามารถใช้ * แทนได้ ทุกๆ คำสั่งและสคริปท์ควรจะระบุ path เต็มเพื่อที่จะได้ไม่ผิดพลาดเวลา cron จะเอ็กซีคิวโปรแกรมหรือสริปท์ นั้นๆ

ตัวอย่างเช่น

0 * * * * /usr/sbin/ntpdate time1.nimt.or.th

หมายความว่า ทุกๆ วัน และทุกๆ ชั่วโมงที่มีเวลาเป็น 0 นาที ให้เอ็กซีคิวโปรแกรม ntpdate

*/5 * * * * /root/bin/convertor.sh

สังเกตว่าใช้เครื่องหมาย / ตามด้วยเลข 5 หมายความว่าทุกๆ 5 นาทีให้เอ็กซีคิวสคริป /root/bin/convertor.sh

0 3 */5 * * /root/bin/backupstore.sh

หมายความว่า ทุกๆ วันที่ 5 หารลงตัว คือ วันที่ 5 10 15 20 25 30 ให้เอ็กซีคิวสคริปท์นี้ ณ เวลา 3.00 AM

30 18 * * 3,5 /root/bin/mysql_backup.sh

หมายความว่า ทุกๆ วันศุกร์และวันพุธ เวลา 18.30 น. ให้รันสริปท์นี้

เราสามารถเอาเครื่องหมาย ',' '/' '*' มาใช้งานได้โดยแต่ละสัญลักษณ์มีความหมายแตกต่างกันออกไป ดังตัวอย่างด้านบน crontab มีประโยชน์มาก หากเราต้องการใช้สำรองข้อมูลตามวันและเวลาที่ต้องการ หากนึกอะไรไม่ออกก็ลองเพิ่ม crontab

0 * * * * /usr/sbin/ntpdate time1.nimt.or.th

เอาไว้ใน server เราด้วยนะครับ เพราะคำสั่งนี้เป็นคำสั่งที่ใช้ปรับเวลาเครื่องให้ตรงกับ Time server เพื่อให้เวลาเครื่องตรงกับเวลาอ้างอิงตามที่ พรบ. คอมพิวเตอร์กำหนด(Server เราจะได้ไม่ผิดกฎหมายLaughing) โดย crontab ด้านบนเป็นการเทียบเวลากับสถาบันมาตรวิทยาของไทยเรานั้นเอง

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

เมื่อใช้ xcopy แล้ว nsufficient-memory นี่เลยครับ robocopy