Ubuntu系統(tǒng)下用Crontab命令定時(shí)執(zhí)行PHP文件詳解
前言
一般我在開(kāi)發(fā)中,常用的定時(shí)任務(wù)有2種。一種是直接調(diào)用PHP文件執(zhí)行,還有一種是調(diào)用遠(yuǎn)程URL地址。
首先,先來(lái)亮相一下我們今天的主角,Crontab命令。這個(gè)是系統(tǒng)定時(shí)命令,作用是定時(shí)的去執(zhí)行一些任務(wù)。包含一些系統(tǒng)級(jí)別的任務(wù),當(dāng)然用戶也可以直接借用該命令來(lái)實(shí)現(xiàn)自己的一些計(jì)劃任務(wù)。
該命令一般跟隨系統(tǒng)啟動(dòng),我們可以使用一下命令來(lái)查看是否cron是否啟動(dòng)
pgrep cron
如果啟動(dòng)了,會(huì)返回一個(gè)進(jìn)程id
Crontab文件一般存放于/etc目錄下。我們使用,crontab -e
來(lái)編輯cron任務(wù)。(第一次用這個(gè)命令,會(huì)讓你選擇文本編輯器)
打開(kāi)cron文件,注意觀察最后一行 m h dom...這里簡(jiǎn)要介紹一下它的意思。
- m:分鐘,0-59
- h:小時(shí),0-23
- dom:日期,1-31
- mon:月份,1-12
- dow:星期,0-6,0為星期天
- command:命令
這里,我們應(yīng)該已經(jīng)知道其大概的用法了。我們只要在對(duì)應(yīng)的位置填寫上我們需要的數(shù)字日期,就可以使用它來(lái)表示:在某月(mon)的某天(dom)或者星期幾(dow)的幾點(diǎn)(h,24小時(shí)制)幾分(m)執(zhí)行某個(gè)命令(command)。
舉個(gè)栗子:
* * * * * php /path/to/your/cron.php 5個(gè)星號(hào)分別代表定時(shí)指定每分、小時(shí)、日、月、周。 * 19 * * * php /var/www/cron/crontab.php 講第二個(gè)參數(shù)h填寫為19,則表示每天的下午7點(diǎn)執(zhí)行crontab.php。 * * * * * php /path/to/your/cron.php 每隔一分鐘執(zhí)行一次任務(wù) 0 * * * * php /path/to/your/cron.php 每小時(shí)的0點(diǎn)執(zhí)行一次任務(wù),比如6:00,10:00 6,10 * 2 * * php /path/to/your/cron.php 每個(gè)月2號(hào),每小時(shí)的6分和10分執(zhí)行一次任務(wù) */3,*/5 * * * * php /path/to/your/cron.php 每隔3分鐘或5分鐘執(zhí)行一次任務(wù),比如10:03,10:05,10:06
在這個(gè)例子中,我們看到不僅有數(shù)字還有星號(hào)和/等等符號(hào)。這些符號(hào)可以讓定時(shí)更加的靈活。
- *(星號(hào)):表示任意值,在相應(yīng)位置填寫*,可以代表任意執(zhí)行。比如h為*,則為任意的小時(shí)
- ,(逗號(hào)):表示一個(gè)部分填寫多個(gè)值,比如在m位置填寫1,5代表1分鐘或5分鐘時(shí)候
- /(斜杠):表示每隔多久,比如在h部分填寫*/2表示每隔2個(gè)小時(shí),*/3表示每隔3個(gè)小時(shí),
- */1和*無(wú)區(qū)別,所以可以省略。這里可以想想,*/2表示能被2整除的時(shí)間就好理解了。
使用你的編輯器,保存->退出之后。重新啟動(dòng)cron任務(wù)。在每天的相應(yīng)時(shí)間即可看到效果。
下面我們就先來(lái)說(shuō)說(shuō)PHP開(kāi)發(fā)中,我常用的兩種。
第一種:直接調(diào)用PHP文件
這種比較簡(jiǎn)單,我們新建一個(gè)php文件。向一個(gè)文件插入一些簡(jiǎn)單的日期內(nèi)容。
#!/usr/bin/php -q <?php $file = "/var/www/".date("H")."_".date("i")."_".date("s").".txt"; file_put_contents($file,date("Y-m-d")); ?>
注意:這種直接調(diào)用PHP文件需要在PHP文件最上方加入#!/usr/bin/php -q
代碼,而第二種方式(接下來(lái)會(huì)講),是直接訪問(wèn)鏈接,通過(guò)Apache來(lái)解析PHP,這種PHP腳本則不需要加這段代碼。
1 6 * * * /path/to/your/cron.php 每天的上午6點(diǎn)01分,執(zhí)行cron.php文件
第二種:通過(guò)訪問(wèn)URL鏈接定時(shí)。
訪問(wèn)URL鏈接需要借助于瀏覽器來(lái)實(shí)現(xiàn)。我們選擇Lynx瀏覽器,Lynx瀏覽器是一款輕便的web瀏覽器,使用于大部分Unix 和Linux系統(tǒng)環(huán)境。安裝命令:
sudo apt-get install lynx
然后就可以和直接訪問(wèn)PHP文件類似的定時(shí)訪問(wèn)URL啦。
* * * * * lynx -dump http://weiya.me/index.php
注意這個(gè)地址最好用絕對(duì)地址,包含“http://”的完整url。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Linux之crontab定時(shí)執(zhí)行腳本方式
- django-crontab 定時(shí)執(zhí)行任務(wù)方法的實(shí)現(xiàn)
- Linux crontab定時(shí)執(zhí)行Shell腳本需要執(zhí)行特定的命令時(shí)解決思路
- Linux下的crontab定時(shí)執(zhí)行任務(wù)命令詳解
- Linux定時(shí)執(zhí)行任務(wù)at和crontab命令詳解
- Centos 7下利用crontab定時(shí)執(zhí)行任務(wù)詳解
- linux下定時(shí)執(zhí)行任務(wù)的方法及crontab 用法說(shuō)明(收集整理)
- 如何使用Linux的Crontab定時(shí)執(zhí)行PHP腳本的方法
- crontab設(shè)置每分鐘、每小時(shí)、每天、每周、每月、每年定時(shí)執(zhí)行的腳本
相關(guān)文章
Linux系統(tǒng)下通過(guò)jar包進(jìn)程號(hào)查詢jar程序占用端口的常用方法
在Linux系統(tǒng)中,如果你已經(jīng)知道了Java應(yīng)用程序的進(jìn)程ID(PID),你可以使用多種方法來(lái)查找該進(jìn)程所占用的端口號(hào);判斷方法可以使用兩個(gè)方法結(jié)果是否一致,以下是幾種常用的方法,需要的朋友可以參考下2024-10-10如何監(jiān)控 Linux 服務(wù)器狀態(tài)的方法
這篇文章主要介紹了如何監(jiān)控 Linux 服務(wù)器狀態(tài)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06CentOS 5.5使用yum來(lái)安裝LAMP(php運(yùn)行環(huán)境)
今天用yum方法搭建起了個(gè)LAMP環(huán)境,中間遇到了很多問(wèn)題,經(jīng)過(guò)google和各位前輩的幫助,終于將環(huán)境搭建起來(lái),現(xiàn)在把完整的步驟記錄下來(lái),2010-09-09CentOS下使用Squid架設(shè)CDN服務(wù)器的方法
這篇文章主要介紹了CentOS下使用Squid架設(shè)CDN服務(wù)器的方法,需要的朋友可以參考下2014-07-07linux中定時(shí)任務(wù)crond命令使用方法
這篇文章主要為大家詳細(xì)介紹了linux中定時(shí)任務(wù)crond命令的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02Linux 塊設(shè)備驅(qū)動(dòng)代碼編寫
這篇文章主要介紹了Linux 塊設(shè)備驅(qū)動(dòng)代碼編寫,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04