php+crontab的定時(shí)任務(wù),看網(wǎng)上各種資料,總是他一言你一語,沒有一篇文章,看完就讓人懂的?,F(xiàn)總結(jié)如下:
一、crontab是linux系統(tǒng)功能與程序無關(guān)
crontab -e //編輯某個(gè)用戶的cron服務(wù) | 這個(gè)最重要,自己編寫crontab
crontab -l //列出某個(gè)用戶cron服務(wù)的詳細(xì)內(nèi)容 | 這個(gè)也重要,查看自己寫了哪些定時(shí)任務(wù)
crontab -u //設(shè)定某個(gè)用戶的cron服務(wù),一般root用戶在執(zhí)行這個(gè)命令的時(shí)候需要此參數(shù)crontab -r | 刪除某個(gè)用戶的cron服務(wù)
關(guān)于時(shí)間的書寫規(guī)則:
前5個(gè)字段分別表示:
- 分鐘:0-59
- 小時(shí):1-23
- 日期:1-31
- 月份:1-12
- 星期:0-6(0表示周日)
還可以用一些特殊符號(hào):
- *: 表示任何時(shí)刻
- ,: 表示分割
- -:表示一個(gè)段,如第二端里: 1-5,就表示1到5點(diǎn)
- /n : 表示每個(gè)n的單位執(zhí)行一次,如第二段里,*/1, 就表示每隔1個(gè)小時(shí)執(zhí)行一次命令。也可以寫成1-23/1.
二、寫完重啟
cron:sudo service cron restart 或者 /etc/init.d/cron restart
三、對(duì)于Yii下使用cron:
重點(diǎn)三個(gè)地方:
A/ protected/config/console.php -->里面db注釋的部分開啟
B/ 自己建commands/TestCommand.php
C/ yiic.php里面的引用地址的配置,細(xì)節(jié)見補(bǔ)充
寫一個(gè)運(yùn)行成功的實(shí)例:
/1 * * * * php /home/user_name/sites/project_name/yiicmd.php test 'datetime'
site為用戶名下的php運(yùn)行目錄,project_name為項(xiàng)目名。yiicmd.php 自己寫的文件,與protected下的yiic.php一樣,但里面yii的引用路徑要改~
關(guān)于cron的補(bǔ)充:
cron的實(shí)際存放地址:看著好像etc下面有cron.d cron.daily cron.hourly crontab,這么多crontab的文件,但實(shí)際上:
linux:/var/spool/cron // 用 crontab -l 打開看到的文件,就是它*
freebsd:/var/cron/tabs
關(guān)于yiic補(bǔ)充:
yiic 默認(rèn)只是一個(gè)php文件,需要用php命令運(yùn)行:php yiic 或者 php yiic.php
也可以用:chmod +x yiic 命令直接將yiic改成可運(yùn)行的。 便可直接進(jìn)入cd protected寫:yiic help。
參考資料:http://www.yiiframework.com/extension/yii-crontab/ //關(guān)于yiicmd.php位置無所謂,都可以,關(guān)鍵里面定位要注意。這個(gè)插件幾乎無用,因?yàn)樗鼰o法寫入crontab中,要改掉各種文件的寫權(quán)限,太煩。http://linux.chinaitlab.com/unix/795992.html //講的也比較好,簡潔http://blog.csdn.net/tianlesoftware/article/details/5315039 //講的一般,比較細(xì)
幾個(gè)典型時(shí)間例子:
- 每五分鐘執(zhí)行 */5 * * * *
- 每小時(shí)執(zhí)行 0 * * * *
- 每天執(zhí)行 0 0 * * *
- 每周執(zhí)行 0 0 * * 0
- 每月執(zhí)行 0 0 1 * *
- 每年執(zhí)行 0 0 1 1 *