สั่ง Server ทำงานตามวันเวลาที่เราตั้งไว้

crontab

kittipong สั่ง Server ทำงานตามวันเวลาที่เราตั้งไว้

เราสามารถใช้คำสั่ง crontab เพื่อสั่งงานให้ server ทำงานตามวันเวลาที่เราต้องการได้ดังนี้

สร้างไฟล์ เช่น
# pico kitti.cron
0 5 * * * cp /home/kitti/data1.txt /home/kitti/data2.txt

อธิบาย:
0 คือ นาทีที่ 0 ซึ่งค่าเป็นไปได้คือ (0-59)
5 คือ ตีห้า ซึ่งค่าเป็นไปได้คือ (0-23)
* คือ ทุกวัน ซึ่งค่าเป็นไปได้คือ (1-31)
* คือ ทุกเดือน ซึ่งค่าเป็นไปได้คือ (1-12)
* คือ ทุกวันของสัปดาห์ ซึ่งค่าเป็นไปได้คือ (0-6)

แล้ว save
# crontab kitti.cron
เป็นการสั่งให้ crontab ทำงานตามวันเวลาดังกล่าว

# crontab -l (แอลเล็ก)
เป็นการขอดูว่าเราสั่งงานอะไรไว้บ้าง


แล้วคุณก็จะสั่งงาน Server ได้ดั่งใจครับ

เพิ่มเติมอีกนิดครับ

0 5 * * * ตรงนี้สามารถเปลี่ยนเป็นแบบ

@hourly
@daily
@weekly

ได้ครับ

#crontab -l :: แสดงกำหนดการของการสั่งให้คอมพิวเตอร์ทำงานอย่างอัตโนมัติ ตามเวลาที่กำหนด

#cat /etc/crontab :: แสดงตาราง crontab ในเครื่อง

Ref :: http://www.thaibsd.com/webboard/show.php?Category=thaibsd&No=1305&page=1

บันทึกนี้เขียนที่ GotoKnow โดย  ใน นายก๊อต:รวมแหล่งความรู้

คำสำคัญ (Tags)#network#opensource#computer#it#งานพัฒนา

หมายเลขบันทึก: 24615, เขียน: 20 Apr 2006 @ 12:21 (), แก้ไข: 18 Jun 2012 @ 09:17 (), สัญญาอนุญาต: สงวนสิทธิ์ทุกประการ, ความเห็น: 1, อ่าน: คลิก


ความเห็น (1)

naigod
IP: xxx.57.146.225
เขียนเมื่อ 
ShareKnowledge
เพื่อไว้สำหรับมือใหม่ต่างๆก๊าบ

คำสั่ง Crontab เป็นคำสั่งในการทำ Schedule ในการสั่งโปรแกรม หรือ Script ต่าง ๆ ทำงานตามเวลาที่กำหนด บนระบบ Unix/Linux ซึ่งอำนวย
ความสะดวกได้มากที่เดียว งานบางอย่างที่จำเป็นต้องทำซ้ำ ๆ ในเวลาเดียวกันไม่ว่าจะทุกวัน ทุกสัปดาห์ หรือทุกเดือน เช่นสั่งให้ clear log ของ Squid
ทุกเที่ยงคืนของวันอาทิตย์
คำสั่งและ option ของ crontab มีดังนี้
Code:
#crontab filename การนำเอาคำสั่ง crontab เข้ามาจาก ไฟล์อื่น
#crontab -e แก้ไข crontab ปัจจุบัน (ส่วนมากผมจะเพิ่มคำสั่งลงไปในนี้เลย)
#crontab -l ดูคำสั่ง crontab ทั้งหมดที่มีอยู่
#crontab -r ลบคำสั่ง crontab ที่มีทั้งหมด
#crontab -u user เป็นคำสั่งของผู้ดูแลระบบเท่านั้น เพื่อใช้ดู แก้ไข ลบ crontab ของ user แต่ละคน

เมื่อเรีกคำสั่งตามข้างบนแล้ว crontab จะเข้าสู่ระบบการ กำหนด หรือแก้ไข ซึ่งการกำหนด หรือแก้ไขนี้จะเหมือนกับการใช้งาน vi

Fornat ของคำสั่ง crontab มีทั้งหมด 6 fields ดังนี้

1 2 3 4 5 6
minute hour day month weekday command

fields 1 - 5 เป็นการกำหนดเวลา และ fiekds ที่ 6 เป็นการกำหนดคำสั่ง

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

ตัวอย่าง
ต้องการให้ clear log ของ Squid ทุกเที่ยงคืนของวันอาทิตย์
#crontab -e
เพื่อคำสั่งเข้าไป

0 0 * * 0 /usr/local/squid/sbin/squid -k rotate

แล้วทำการบันทึกแล้วออกมาโดยกด Esc แล้วกด :wq (ถ้าเป็น vi นะ)

Ref :: http://www.thaibsd.com/webboard/show.php?Category=thaibsd&No=5575