Linux下使用crontab設置定時任務

開發和維護項目的時候,我們經常需要定時去執行某個任務,比如定時跑一個腳本或者定時備份數據等。

一.crontab安裝
執行一下 service crond status 命令查看 cron服務狀態,若遇到“crontab command not found”錯誤,這是因爲軟件包沒有安裝。
一般情況下linux系統會自帶crontab及crond。如果沒有安裝,請使用以下指令安裝:

yum install vixie-cron           
yum install crontabs 

(PS:Ubuntu操作系統下請使用apt-get)


二.rontab服務啓動與停止常用命令:

service crond status        //查看 cron服務狀態
service crond start         //啓動服務
service crond stop          //關閉服務
service crond restart       //重啓服務
service crond reload        //重新載入配置

三.crontab任務管理命令

crontab –e : 修改 crontab 文件,如果文件不存在會自動創建。 
crontab –l : 顯示 crontab 文件。 
crontab -r : 刪除 crontab 文件。

四.設置定時任務
  (1)crontab文件中的行由6個字段組成,不同字段間用空格分割。前5個字段指定命令要運行的時間,最後一欄代表要執行的命令,格式如下:

minute   hour   day   month   week   command     [按順序分別是:分鐘 小時 日期 月份 星期]

    分鐘(0-59)
    小時(0-28)
    日期(1-31)
    月份(1-12)
    星期(0-6,其中0代表星期日)

第六個字段是一個要在適當時間執行的命令(注意:當使用crontab運行shell腳本時,要由用戶來給出腳本的絕對路徑)

  (2)除了數字還有幾個特殊的符號:"*"、"/"和"-"、","

    星號(*):代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件後每月都執行該命令操作。
    逗號(,):可以用逗號隔開的值指定一個列表範圍,例如,“1,2,5,7,8,9”
    中槓(-):可以用整數之間的中槓表示一個整數範圍,例如“2-6”表示“2,3,4,5,6”
    正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執行一次。

  (3)幾個常用例子:

每五分鐘執行一次: */5 * * * *
每小時執行一次 : 0 * * * *
每天執行一次: 0 0 * * *
每週執行一次: 0 0 * * 0
每月執行一次: 0 0 1 * *
每年執行一次: 0 0 1 1 *

  (4)特殊例子

30 21 * * * /apps/bin/cleanup.sh          //表示每晚的21:30 運行/apps/bin/目錄下的cleanup.sh腳本。
45 4 1,10,22 * * /apps/bin/cleanup.sh     //表示每月1,10,22日的4:45 運行/apps/bin/目錄下的cleanup.sh腳本。
10 1 * * 6,0 /apps/bin/cleanup.sh         //表示每週六、週日的1:10 運行/apps/bin/目錄下的cleanup.sh腳本。
0,30 18-23 * * * /apps/bin/cleanup.sh     //表示在每天18:00至23:00之間每隔30分鐘 運行/apps/bin/目錄下的cleanup.sh腳本。
0 23 * * 6 /apps/bin/cleanup.sh           //表示每星期六的23:00 運行/apps/bin/目錄下的cleanup.sh腳本。

四.實例
 (1)寫一個定時任務,每分鐘往test.txt文件寫入一個"hello world"字符串
 a.創建兩個文件(比如先在/usr目錄下創建個cron_task文件夾,專門存放定時任務文件,以下命令均在此文件夾下執行)

touch script.sh    //腳本文件,後綴可以隨便定義,比如(script script.cron script.sh均可)
touch test.txt     //目標文件

 b.使用vi命令編輯script.sh文件。寫入以下內容:

 */1 * * * * echo "hello world" >> /usr/cron_task/test.txt


 c.添加定時任務。將剛創建的定時任務腳本添加到定時任務中,執行命令

crontab script.sh


 d.查看結果

service crond status    //查看定時任務服務執行情況
cat test.txt            //查看目標文件的內容(是否定時寫入了"hello world"字符串)


 (2)每間隔5分鐘,向某個地址發送請求,”-O temp.txt”表示輸出會發送到臨時文件

*/5 * * * * /usr/bin/curl -O temp.txt http://host/test.php

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章