建立的contab 文件中,每一行都表明一項任務,每行的每一個字段表明一項設置.前五個字段是時間,第六個字段是要執行的命令php
minute hour day month week commandshell
minute: 表示分鐘,能夠是從0到59之間的任何整數。bash
hour:表示小時,能夠是從0到23之間的任何整數。dom
day:表示日期,能夠是從1到31之間的任何整數。spa
month:表示月份,能夠是從1到12之間的任何整數。code
week:表示星期幾,能夠是從0到7之間的任何整數,這裏的0或7表明星期日。blog
command:要執行的命令,能夠是系統命令,也能夠是本身編寫的腳本文件。crontab
在以上各個字段中,還能夠使用如下特殊字符:it
星號(*):表明全部可能的值,例如month字段若是是星號,則表示在知足其它字段的制約條件後每個月都執行該命令操做。class
逗號(,):能夠用逗號隔開的值指定一個列表範圍,例如,「1,2,5,7,8,9」
中槓(-):能夠用整數之間的中槓表示一個整數範圍,例如「2-6」表示「2,3,4,5,6」
正斜線(/):能夠用正斜線指定時間的間隔頻率,例如「0-23/2」表示每兩小時執行一次。同時正斜線能夠和星號一塊兒使用,例如*/10,若是用在minute字段,表示每十分鐘執行一次。
示例
1. 每分鐘執行一次
* * * * * command
2. 每小時的第5分鐘和20分鐘執行
5,20 * * * * command
3. 天天的上午8點到11點的第5分鐘和20分鐘執行
5,20,8-11,* * * command
4. 每隔3天的上午8點到11點的第5分鐘和第20分鐘執行
5,20,8-11,*/3 * * command
5. 每週1到週五的早上6到8點間每隔半小時執行
0,30 6-8 * * 1-5 command
6. 每個月的4號與每週的週一和週三執行
* * 4 * mon,wed command
7. 一月和三月的5號執行
* * 5 jan,mar * command
秒級執行
10秒執行
* * * * * command * * * * * sleep 10; command * * * * * sleep 20; command * * * * * sleep 30; command * * * * * sleep 40; command * * * * * sleep 50; command * * * * * sleep 60; command
2秒執行(總不能寫30行sleep吧)
建立shell腳本crontab.sh,crontab定時執行腳本
crontab.sh
#!/bin/bash step=2 #間隔的秒數,不能大於60 for (( i = 0; i < 60; i=(i+step) )); do $(php '/home/myfile/php/crontab/test.php') sleep $step done exit 0
crontab 文件中寫入
# m h dom mon dow command
* * * * * /home/myfile/php/crontab/crontab.sh
注意:若是60不能整除間隔的秒數,則須要調整執行的時間。例如須要每7秒執行一次,就須要找到7與60的最小公倍數,7與60的最小公倍數是420(即7分鐘)。
則 crontab.sh step的值爲7,循環結束條件i<420,
#!/bin/bash step=7 #間隔的秒數,不能大於60 for (( i = 0; i < 420; i=(i+step) )); do $(php '/home/myfile/php/crontab/test.php') sleep $step done exit 0
這時 crontab -e能夠輸入如下語句來實現
# m h dom mon dow command
*/7 * * * * /home/myfile/php/crontab/crontab.sh