Linux crontab 詳細介紹及執行php


Linux crontab 命令介紹

語法介紹
使用權限 : root用戶和crontab文件的所有者

image

crontab格式

語法

:

crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]

說明 :

crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。-u user 是指設定指定 user 的時程表,這個前提是你必須要有其權限(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設定自己的時程表。

參數 :

-e [UserName]: 執行文字編輯器來設定時程表,內定的文字編輯器是 VI,如果你想用別的文字編輯器,則請先設定 VISUAL 環境變數來指定使用那個文字編輯器(比如說 setenv VISUAL joe)

-r [UserName]: 刪除目前的時程表

-l [UserName]: 列出目前的時程表

-v [UserName]:列出用戶cron作業的狀態

時程表的格式如下 :

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 的方式來設定時程表。

由於unix版本不一樣,所以部分語法有差別,例如在hp unix aix 中設定間隔執行如果采用*/n 方式將出現語法錯誤,在這類unix中 ,間隔執行只能以列舉方式,詳請見例子。

簡單使用方法:

crontab –e 

後加入:

*/1 * * * * /usr/local/curl/bin/curl http://appbaike.com/

每分鐘執行一次。

然後 /sbin/service crond restart  重新啟動

詳細使用方法:
用VI編輯一個文件 cronfile,然后在這個文件中輸入格式良好的時程表。編輯完成后,保存並退出。

在命令行輸入

$: crontab cronfile

這樣就將cronfile文件提交給c r o n進程,同時,新創建cronfile的一個副本已經被放在/ v a r / s p o o l / c r o n目錄中,文件名就是用戶名。

以某一頻率執行任務

linux缺省會啟動crond進程,crond進程不需要用戶啟動、關閉。
crond進程負責讀取調度任務並執行,用戶只需要將相應的調度腳本寫入cron的調度配置文件中。
cron的調度文件有以下幾個:

  1. crontab
  2. cron.d
  3. cron.daily
  4. cron.hourly
  5. cron.monthly
  6. cron.weekly

    如果用的任務不是以hourly monthly weekly方式執行,則可以將相應的crontab寫入到crontab 或cron.d目錄中。

    示例:
    每隔一分鍾執行一次腳本 /opt/bin/test-cron.sh
    可以在cron.d新建腳本 echo-date.sh
    內容為

    */1 * * * * root  /opt/bin/test-cron.sh

    在指定的時間運行任務

    也可以通過at命令來控制在指定的時間運行任務

    如:

    at -f test-cron.sh -v 10:25
    其中-f 指定腳本文件, -v 指定運行時間

    quote:ea946d690b="lophyxp"]首先用
    contab -l >contabs.tmp
    導出contab的配置。
    然后編輯contabs.tmp文件。以一下格式添加一行:
    分鍾 小時 天 月 星期 命令
    比如
    10 3 * * 0,6 hello
    就是每周六、周日的3點10分執行hello程序。
    15 4 * * 4-6 hello
    就是從周四到周六的4點15點執行hello程序。
    然后用
    contab contabs.tmp
    命令導入新的配置。
    一般不建議直接修改/etc/下的相關配置文件。

    啟動cron進程的方法:/etc/init.d/crond start
    開機就啟動cron進程的設置命令:chkconfig --add crond

    方法二:

    把cron加入到啟動腳本中:

    # rc-update add vixie-cron default

    crontab -l #查看你的任務

    crontab-e#編輯你的任務

    crontab-r#刪除用戶的crontab的內容

    實例講解二:

    系統cron設定:/etc/crontab
        通過 /etc/crontab 文件,可以設定系統定期執行的任務,當然,要想編輯這個文件,得有root權限

    0 7   *    *   *    root    mpg123 ~/wakeup.mp3
    分 時 日 月 周

    示例:

    0 4  * * 0     root emerge --sync && emerge -uD world              #每周日凌晨4點,更新系統
    0 2 1 * *     root   rm -f /tmp/*                                                    #每月1號凌晨2點,清理/tmp下的文件
    0 8 6 5 *   root     mail  robin < /home/galeki/happy.txt             #每年5月6日給robin發信祝他生日快樂

    假如,我想每隔2分鍾就要執行某個命令,或者我想在每天的6點、12點、18點執行命令,諸如此類的周期,可以通過 “ / ” 和 “ , ” 來設置:

    */2   *   *   *   *           root      ...............      #每兩分鍾就執行........
    0 6,12,18   *   *   *    root      ...............      #每天6點、12點、18點執行........

    每兩個小時

    0 */2 * * * echo "have a break now." >&gt; /tmp/test.txt

    晚上11點到早上8點之間每兩個小時,早上八點

    0 23-7/2,8 * * * echo "have a good dream:)" &gt;&gt; /tmp/test.txt

    每個月的4號與每個禮拜的禮拜一到禮拜三的早上11點

    0 11 4 * 1-3 command line

    1月1日早上4點

    0 4 1 1 * command line

    cron 執行PHP的方法

    要用 crontab 自動執行 php 程式,可以這樣做:
    方法一
    1. 在 php 程式的第一行加入:
    #!/usr/local/php/bin/php -q
    例如:

    Php代碼

    1. #!/usr/local/php/bin/php -q 
    2. <?php 
    3. $foo = 123; 
    4. ?>  

    請留意,我的 php 是安裝在 /usr/local/php,請根據你的 php 執行檔位置作出修改。
    2. 將 php 程式給予可執行權限:
    chmod +x testing.php
    3. 執行 crontab -e,然後加入以下內容:
    00 00 * * * /path/to/testing.php > /dev/null 2>&2
    以上語法會在每天的零時零分執行 /path/to/testing.php
    方法二
    另一個方法是不用在 php 程式的第一行加入 "#!/usr/local/php/bin/php -q",可以省略第一步及第二步,直接執行 crontab -e,並輸入以下內容:
    00 00 * * * usr/local/php/bin/php -q /path/to/testing.php > /dev/null 2>&2
    這個方法的結果跟方法一的結果相同。


    免責聲明!

    本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



     
    粵ICP備18138465號   © 2018-2025 CODEPRJ.COM