Linux下定時執行php腳本
-
crontab -e 打開編輯定時任務列表文件(-r:刪除目前的時程表,-l:列出目前的時程表)
-
輸入任務執行的時間參數和要執行的文件路徑和文件名
-
命令 which php 查看linux下安裝的php的路徑
-
*/1 * * * * /usr/bin/php -q /var/www/runtest.php (前五個參數爲時間參數:分 小時 月的第幾天 哪個月 一週的第幾天;第二參數爲php的安裝路徑;第三參數-q:PHP 原本是應用在網頁應用的﹐因此它內定會送出 HTML 的HEADER﹐但 是在此我們是要將 PHP 用作 Shell Script﹐”-q” 就是表示不要送 出HEADER 的意思;第四參數是要執行的php文件的路徑)
-
五個時間參數的:
-
時程表的格式如下:
f1 f2 f3 f4 f5 program
其中 f1 是表示分鐘,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執行的程式。
當 f1 爲 * 時表示每分鐘都要執行 program,f2 爲 * 時表示每小時都要執行程式,其餘類推
當 f1 爲 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內要執行,f2 爲 a-b 時表示從第 a 到第 b 小時都要執行,其餘類推
當 f1 爲 */n 時表示每 n 分鐘個時間間隔執行一次,f2 爲 */n 表示每 n 小時個時間間隔執行一次,其餘類推
當 f1 爲 a, b, c,... 時表示第 a, b, c,... 分鐘要執行,f2 爲 a, b, c,... 時表示第 a, b, c...個小時要執行,其餘類推
使用者也可以將所有的設定先存放在檔案 file 中,用 crontab file 的方式來設定時程表。
例子:
每月每天每小時的第 0 分鐘執行一次 /bin/ls:
0 7 * * * /bin/ls
在 12 月內, 每天的早上 6 點到 12 點中,每隔 20 分鐘執行一次 /usr/bin/backup:
0 6-12/3 * 12 * /usr/bin/backup
週一到週五每天下午 5:00 寄一封信給 [email protected]:
0 17 * * 1-5 mail -s \"hi\" [email protected] < /tmp/maildata
每月每天的午夜 0 點 20 分, 2 點 20 分, 4 點 20 分....執行 echo \"haha\"
20 0-23/2 * * * echo \"haha\" -
crontab 文件中的每一行都代表一項任務,它的格式是:
minute hour day month dayofweek command
*
minute ― 分鐘,從 0 到 59 之間的任何整數
*
hour ― 小時,從 0 到 23 之間的任何整數
*
day ― 日期,從 1 到 31 之間的任何整數(如果指定了月份,必須是該月份的有效日期)
*
month ― 月份,從 1 到 12 之間的任何整數(或使用月份的英文簡寫如 jan、feb 等等)
*
dayofweek ― 星期,從 0 到 7 之間的任何整數,這裏的 0 或 7 代表星期日(或使用星期的英文簡寫如 sun、mon 等等)
*
command ― 要執行的命令(命令可以是 ls /proc >> /tmp/proc 之類的命令,也可以是執行你自行編寫的腳本的命令。)
在以上任何值中,星號(*)可以用來代表所有有效的值。譬如,月份值中的星號意味着在滿足其它制約條件後每月都執行該命令。
整數間的短線(-)指定一個整數範圍。譬如,1-4 意味着整數 1、2、3、4。
用逗號(,)隔開的一系列值指定一個列表。譬如,3, 4, 6, 8 標明這四個指定的整數。
正斜線(/)可以用來指定間隔頻率。在範圍後加上 / 意味着在範圍內可以跳過 integer。譬如,0-59/2 可以用來在分鐘字段定義每兩分鐘。間隔頻率值還可以和星號一起使用。例如,*/3 的值可以用在月份字段中表示每三個月運行一次任務。
開頭爲井號(#)的行是註釋,不會被處理。