首先說說cron,它是一個linux下的定時執行工具。根用戶以外的用戶可以使用 crontab 工具來配置 cron 任務。所有用戶定義的 crontab 都被保存在/var/spool/cron 目錄中,並使用創建它們的用戶身份來執行。要以某用戶身份創建一個 crontab 項目,登錄為該用戶,然后鍵入 crontab -e 命令來編輯該用戶的 crontab。該文件使用的格式和 /etc/crontab 相同。當對 crontab 所做的改變被保存后,該 crontab 文件就會根據該用戶名被保存,並寫入文件 /var/spool/cron/username 中。cron 守護進程每分鍾都檢查 /etc/crontab 文件、etc/cron.d/ 目錄、以及 /var/spool/cron 目錄中的改變。如果發現了改變,它們就會被載入內存。這樣,當某個 crontab 文件改變后就不必重新啟動守護進程了。
安裝crontab:
yum install crontabs
說明:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
查看crontab服務狀態:service crond status
手動啟動crontab服務:service crond start
查看crontab服務是否已設置為開機啟動,執行命令:ntsysv
加入開機自動啟動:
chkconfig –level 35 crond on
每一小時執行myscript.php如下:
# crontab -e 00 * * * * /usr/local/bin/php /home/john/myscript.php
如果你的PHP腳本可以通過URL觸發,你可以使用lynx或curl或wget來配置你的Crontab。
下面的例子是使用Lynx文本瀏覽器訪問URL來每小時執行PHP腳本。Lynx文本瀏覽器默認使用對話方式打開URL。但是,像下面的,我們在lynx命令行中使用-dump選項來把URL的輸出轉換來標准輸出。
00 * * * * lynx -dump http://www.jb51.net/myscript.php
下面的例子是使用CURL訪問URL來每5分執行PHP腳本。Curl默認在標准輸出顯示輸出。使用”curl -o”選項,你也可以把腳本的輸出轉儲到臨時文件。
*/5 * * * * /usr/bin/curl -o temp.txt http://www.jb51.net/myscript.php
下面的例子是使用WGET訪問URL來每10分執行PHP腳本。-q選項表示安靜模式。”-O temp.txt”表示輸出會發送到臨時文件。
*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.jb51.net/myscript.php
參 數:
-e 編輯該用戶的計時器設置。
-l 列出該用戶的計時器設置。
-r 刪除該用戶的計時器設置。
-u<用戶名稱> 指定要設定計時器的用戶名稱。
crontab 格式:
基本格式 :
分鍾 小時 日 月 星期 命令
* * * * * *
第1列表示分鍾1~59 每分鍾用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列 表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
記住幾個特殊符號的含義:
“*”代表取值范圍內的數字,
“/”代表”每”,
“-”代表從某個數字到某個數字,
“,”分開幾個離散的數字
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重啟apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重啟apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重啟apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之間每隔30分鍾重啟apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重啟apache。
0 */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小時重啟apache
0 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11點到早上7點之間,每隔一小時重啟apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4號與每周一到周三的11點重啟apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart