การใช้ crontab ตั้งเวลาให้ Server(Linux/Unix) ทำงาน

Written on July 22, 2010 – 3:33 pm | by ikapeng |

คำสั่ง crontab
คำสั่ง crontab เป็นคำสั่งในการทำ schedule ในการสั่งโปรแกรม หรือ script ต่างๆ ทำงานตามเวลาที่กำหนด บนระบบ UNIX/LINUX
ซึ่งอำนวยความสะดวกได้มากเลยที่เดียว งานบางอย่างที่จำเป็นต้องทำซ้ำๆในเวลาเดียวกัน ไม่ว่าจะทุกวัน ทุกสัปดาห์ หรือ ทุกเดือน

การใช้งาน crontab
คำสั่งและ option ของ crontab มีดังนี้

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

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

Esc       เพื่อออกมาสู่โหมดปกติ
i           เพื่อการเพิ่ม คำสั่ง ข้อความ เข้าไปใหม่
x          ลบ ตัวอักษรที่ cursor  วางอยู่ ทีละอักษร ในโหมดปกติ
dd        ลบบรรทัด ทั้งบรรทัด ที่ cursor วางอยู่ทีละแถว ในโหมดปกติ
:q!        ออกโดยไม่ต้องแก้ไขอะไร
:wq!      เก็บบันทึกข้อความที่แก้ไขแล้วออกจากโปรแกรม
คำสั่งเหล่านี้เป็นแค่บางส่วนเท่านั้น แต่ก็พอใช้งานคำสั่ง crontab แล้วล่ะครับ ถ้าใครอยากได้มากกว่านี้ต้องศึกษาเพิ่มเอาอีกที

การกำหนดให้ crontab ทำงาน

format ของคำสั่ง crontab มีทั้งหมด 6 fields เป็นดังบรรทัดข้างล่าง

minute(s) hour(s) day(s) month(s) weekday(s) command(s)

fields 1-5 เป็นการกำหนดเวลา และ field ที่ 6 เป็นการกำหนดคำสั่ง ดังความหมายของแต่ละ fields ดังต่อไปนี้

Field มีค่า รายละเอียด
minute                 0-59         เวลาเป็นนาที จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง
hour                    0-23         เวลาเป็นชั่วโมง จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง
day                     1-31         เวลาเป็นวัน จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง
month                 1-12         เวลาเป็นเดือน จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง
weekday              0-6          วันของแต่ละสัปดาห์ มีค่าดังนี้ (อาทิตย์ = 0, จันทร์ = 1, อังคาร = 2, พุธ = 3, พฤหัส = 4, ศุกร์ = 5 และ เสาร์ = 6)
command             คำสั่ง         เราสามารถกำหนดคำสั่งได้มากมาย รวมทั้ง script ต่างๆ ตามที่เราต้องการ

ตัวอย่างการกำหนด crontab
การ เพิ่ม crontab โดยเรียกใช้คำสั่ง crontab -e เมื่อเข้าสู่โปรแกรมแล้ว กด i เพื่อเพิ่ม คำสั่งดังตัวอย่างด้านล่างนี้เข้าไป แล้วทำการบันทึก
แล้วออกมาโดยกด Esc แล้วกด :wq!

0 8 * * * /usr/bin/mplayer /home/me/music/thai.mp3

จากคำสั่งด้านบนจะเป็นการสั่งให้โปรแกรม mplayer เล่นเพลง thai.mp3 ตอน 08:00 น. ของทุกๆวัน

0 0 * * 1 /home/me/getlogs.pl

จากคำสั่งด้านบน จะทำการ Run script getlogs.pl ที่ path /home/me ทุกวันจันทร์ ทุกๆเดือน ตอนเที่ยงคืน

0 0 * * 1,5 /home/me/getlogs.pl
คำ สั่งนี้เหมือนคำสั่งด้านบนครับ แต่จะเพิ่มการทำงานในวันศุกร์ด้วย ซึ่งเราสามารถใช้ “,” คั่นไปเรื่อยๆได้ เพื่อที่จะกำหนดเพิ่มให้แต่ล่ะ fields หรือใช้ “*”
เพื่อการกำหนดเป็นทั้งหมด(หมายความว่า หากที่ field ชั่วโมง เป็น * ก็หมายความว่าต้องทำงานทุกชั่วโมง)

คำสั่งเพิ่มเติมที่ควรรู้
man crontab
man cron
man at
man batch

http://www.thaiasteriskclub.com/index.php?topic=117.0

Tags: , ,
  1. 1 Comment to “การใช้ crontab ตั้งเวลาให้ Server(Linux/Unix) ทำงาน”

  2. By PAMELADILLON on Jul 26, 2010 | Reply

    Lots of Students in the world understand that the essays writing service can provide us with the essay buying paper. So, that is simple to buy paper.

Post a Comment

Spam protection by WP Captcha-Free

Find entries :

About Me

สวัสดีครับ ยินดีต้อนรับทุกท่านที่แวะผ่านเข้ามาเยี่ยมชม บล็อก...เว็บ...หรือว่าเว็บบล็อกมั้ง ที่ที่นี้ทำไว้ทำไมก็ไม่รู้นะ แต่ที่แน่ๆก็น่าจะทำไว้เฉยๆ อ่าาา เอาเป็นว่าเว็บบล็อกนี้ทำไว้เก็บข้อมูลที่น่าสนใจ น่าอ่านทั้งที่เป็นประโยชน์ หรือไร้สาระบ้างผมก็จะเอามาโพสต์เก็บไว้อ่านเองบ้าง หรือใครจะมาอ่านด้วยก็ตามสบายเลยนะครับ เผื่อว่ามันจะมีประโยชน์บ้าง เชิญอ่านให้สนุกเลยละกันครับ..:). More

Want to subscribe?

 Subscribe in a reader Or, subscribe via email:

Enter your email address:
Delivered by FeedBurner