Debian的定時執行命令Crontab


轉載:http://i.592.net/?post=276

 

Debian的定時執行命令Crontab,這個相當於Windows的計划任務

    想要讓Debian定時執行命令就得靠crontab了!
    它的功能類似微軟的計划任務,可以在您設定的時間執行你想要的命令。
    通過編寫設定文件可以組合出復雜的執行時段,讓命令的執行更加有效率。

cron設置文件在Debian系統下的位置
   /etc/crontab

大致內容如下:

01 # /etc/crontab: system-wide crontab
02 # Unlike any other crontab you don't have to run the `crontab'
03 # command to install the new version when you edit this file.
04 # This file also has a username field, that none of the other crontabs do.
05  
06 SHELL=/bin/sh
07 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
08  
09 # m h dom mon dow user command
10 17 * * * * root run-parts --report /etc/cron.hourly
11 25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily
12 47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly
13 52 6 1 * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly
14 0 20 1 * * root /usr/bin/updatedb
15 #

需要設定的是 # m h dom mon dow user command 下面的部份
由左至右相對應的意思為:

分0-59   時0-23   日1-31   月1-12   周0-7  執行命令的用戶   命令


其中比較有意思的是:周,0和7都代表星期日

而可以使用的特殊符號有

* (星號)   代表所有時間都接受
, (逗號)   代表同一個分類可以有多少個值
- (減號)   代表在這個時段內執行
/n          代表每n個時間就執行一次

范例:

30 12 * * * command:   <em>每天12:30執行command</em>
0 6,12 15 * * command:<em>每月15日的6:00和12:00執行command</em>
10 8 1-15 6 * command:<em>每年6月1至15日的8:10執行command</em>
*/5 * * * 7 command:   <em>星期日每隔五分鍾執行一次command</em>

定時器語法:
就是上面計划任務的第一部分。它決定了何時執行計划任務。

它包含5部分:
  1.分鍾(0-59)
  2.小時(0-23)
  3.一個月的哪一天(1-31)
  4.一年中的哪個月(1-12)
  5.星期幾(0是星期天)

  星號  如果某個部分出現的是星號而不是數字,就是說明這個部分表示的時間全部會執行。

可能一時不太容易說清楚,再看例子吧。

示例:
   1、下面的計划任務會一直運行
        * * * * * [command]

   2、下面的計划任務會在每個小時的0分時運行(就是每小時執行一次)
        0 * * * * [command]

   3、下面依舊是一個每小時運行一次的計划任務。不過是在每個小時的一刻鍾時運行的(1:15,2:15.。。)
       15 * * * * [command]

   4、下面的計划任務每天執行一次,在2:30分
        30 2 * * * [command]

   5、下面的計划任務是在每個月2號的午夜執行(比如:2010年2月2日00:00)
        0 0 2 * * [command]

   6、下面的計划任務會在每周一的每個小時0分鍾時執行一次
        0 * * * 1 [command]

   7、下面的會每小時運行3次,在0分,10分,和20分時
        0,10,20 * * * * [command]

   8、下面是用除號“/”表示每多少運行一次。

        */5 * * * * [command]    每5分鍾運行一次

        00 */2 * * * [command]    每2小時運行一次 (* */2 * * * [command]  這種寫法是錯誤的!)

    */1 * * * * root wget -O /var/log/cron.txt http://www.592.net/test.php    每分鍾訪問網站某PHP腳本一次,檢查是否每分鍾自動運行了PHP,可以查看 var/log/cron.txt文件,看下是否有網站PHP返回的內容就可以了!

   9、還可以用“-”表示一個范圍,如下表示5到10點的每個整點運行一次
        0 5-10 * * * [command]

   10、另外還有一個特殊的時間關鍵字“@reboot”,就是每次重啟服務器時運行計划任務
        @reboot [command]

 

設定和管理計划任務
    編輯Crontab,來設定計划任務。使用下面的命令,會在vi 里打開crontab的內容以供編輯:
crontab -e

如果你只想看看,不需要編輯,可以使用以下的命令
crontab -l

要刪除crontab的內容,就是刪除所有的計划任務,可以這樣:
crontab -r

 

    cron是個linux下的定時執行工具,能在無需人工干預的情況下運行作業。由於Cron 是Linux的內置服務,但他不自動起來,能用以下的方法啟動、關閉這個服務:


編輯/etc/crontab 文件配置cron

  cron服務每分鍾不僅要讀一次 /var/spool/cron 內的所有文件,還需要讀一次 /etc/crontab,因此我們配置這個文件也能運用cron服務做一些事情。用crontab配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務。此文件的文件格式是:
  SHELL=/bin/bash
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
  MAILTO=root //如果出現錯誤,或者有數據輸出,數據作為郵件發給這個帳號
  HOME=/ //使用者運行的路徑,這里是根目錄
  # run-parts
  01 * * * * root run-parts /etc/cron.hourly //每小時執行/etc/cron.hourly內的腳本
  02 4 * * * root run-parts /etc/cron.daily //每天執行/etc/cron.daily內的腳本
  22 4 * * 0 root run-parts /etc/cron.weekly //每星期執行/etc/cron.weekly內的腳本
  42 4 1 * * root run-parts /etc/cron.monthly //每月去執行/etc/cron.monthly內的腳本

  大家注意"run-parts"這個參數了,如果去掉這個參數的話,后面就可以寫要運行的某個腳本名,而不是文件夾名了。


重啟命令:
Debian
    /etc/init.d/cron restart

Linux
    /etc/rc.d/init.d/crond restart


免責聲明!

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



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