2011年7月31日 星期日

如何每5分、秒、時、天、月,來跑排程

crontab是常常用來處理排程的好工具,以下是介紹在各種不同的時間區間執行排程


1.每五分鐘執行一次的排程

在crontab中第一個*號代表分鐘,輸入*/5就是代表每五分鐘執行一次排程的意思,每10分鐘就是用*/10,每30分鐘就是*/30
*/5 * * * * /home/ramesh/backup.sh

2.每五小時執行一次的排程

第二個欄位就是小時,所以*/5就是每五小時執行一次排程的意思
0 */5 * * * /home/ramesh/backup.sh

3.每五秒鐘執行一次的排程

因為crontab沒有秒的欄位,所以不能透過crontab來執行這樣子的工作,但是你可以用sleep和while loop的方式來編寫這樣的script.

cat every-5-seconds.sh 
#!/bin/bash
while true
do
 /home/ramesh/backup.sh
 sleep 5
done
你可以用&或者nohup這兩個方式來把這個script丟到背景執行,這樣就可以達到我們想要的效果了.
nohup ./every-5-seconds.sh &

4.每個禮拜五執行一次的排程

而cronatb的第五個欄位呢是「週」,也就是每週五就執行這個排程一次

0 0 * * 5 /home/ramesh/backup.sh 
(or)
0 0 * * Fri /home/ramesh/backup.sh 
你可以參考下表
  • 0=Sun
  • 1=Mon
  • 2=Tue
  • 3=Wed
  • 4=Thu
  • 5=Fri
  • 6=Sat

5.每五個月執行一次的排程

crontab的第3跟第4個欄位是日和月,下面的指令指的就是,5月1號和10月1號各執行一次,你也可以寫英文的May和Oct來表示5月和10月
0 0 1 5,10 * /home/ramesh/backup.sh
(or)  
0 0 1 May,Oct * /home/ramesh/backup.sh
Note: 你不可以寫成5-10這意思是會變成從5月做到10月


參考來源:How to Run Cron Every 5 Minutes, Seconds, Hours, Days, Months