工做中經常使用的Linux命令:crontab命令,定時任務執行命令

本文連接:http://www.cnblogs.com/MartinChentf/p/6060252.html (轉載請註明出處)html

 

  crontab是一個用來設置、刪除或顯示供守護進程cron執行的定時任務的命令。每個用戶均可以擁有屬於本身的定時任務,定時任務文件默認以用戶名命名,並放在/var/spool/cron目錄,該目錄普通用戶無訪問權限。bash

  能夠經過cron.allow 和 cron.deny文件管理用戶使用cron服務的權限。若是cron.allow存在,用戶必須列在其中才會被容許使用cron服務;若是cron.deny存在,被列在其中的用戶禁止使用cron服務;若是二者都不存在,只有超級用戶才能使用cron服務。在CentOS中,這兩個文件放在/etc中,默認只存在cron.deny文件,且爲空。這就表示在CentOS中,默認全部的用戶均有cron的使用權限。mvc

1. 命令格式編輯器

  crontab [-u user] file
  crontab [-u user] [-l | -r | -e] [-i] [-s]
  crontab -n [ hostname ]
  crontab -cui

2. 命令功能spa

  爲我的用戶維護定時任務文件.net

3. 命令選項unix

  -u userhtm

    編輯某個用戶的cron,只用root能夠使用此參數爲別的用戶設置cron服務。也可用於給用戶指定crontab文件。blog

  -l

    列出當前用戶的crontab。

  -r

    刪除當前用戶的crontab。

  -e

    編輯當前用戶的crontab,默認使用vi,或者是由 VISUAL或EDITOR環境變量指定的編輯器。

  -i

    與-r一塊兒使用,用來詢問用戶是否直接刪除crontab。

4. 實例

  實例1:列出當前用戶的定時任務

[22:30:17][dodmaster@mha3 ~]$ crontab -l 0 1 * * 1 $HOME/.DailyShell/hislogclear.sh  0 * * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/voice 20 * * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/data/ 40 * * * * $HOME/.DailyShell/mvcdr2bak.sh $HOME/data/message/sms/

  實例2:root用戶編輯用戶martin的定時任務

[22:30:17][root@mha3 ~]# crontab -u martin -e

  實例3:爲用戶martin指定定時任務文件

[22:30:17][root@mha3 ~]# crontab -u martin martincron

5. cron文件語法

   首先,咱們打開/etc/crontab文件,咱們將會看到以下內容:

複製代碼
[20:40:30][dodmaster@mha3 etc]$ cat /etc/crontab  SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/  # For details see man 4 crontabs  # Example of job definition: # .---------------- minute (0 - 59) # |  .------------- hour (0 - 23) # |  |  .---------- day of month (1 - 31) # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ... # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # |  |  |  |  | # *  *  *  *  * user-name command to be executed
複製代碼

  該文件是存放系統執行的定時計劃,其中前四行用於設置cron服務運行的環境變量:SHELL、PATH、HOME分別指定了cron服務運行時的SHELL環境變量、PATH環境變量和HOME環境變量,這裏再也不贅述。MAILTO則表示cron運行的任務輸出以電子郵件的形式發送到指定用戶,若是該變量的值爲空,則不會發送郵件。餘下幾行的內容說明了系統定時任務的具體書寫格式。

 minute  分鐘,取值範圍0-59
 hour  小時,取值範圍0-23
 day of month  日,取值範圍1-31
 month  月,取值範圍1-12,或者使用英文縮寫jan,feb,mar,apr ...
 day of week  星期,取值範圍0-6,0或7表示星期日,或者使用英文縮寫sun,mon,tue,wed,thu,fri,sat
 user-name  執行該定時任務的用戶
 command  具體執行的命令,能夠是一個簡單的命令,也能夠是一個腳本,或者是一個目錄。若是是一個目錄,則表示執行目錄中的全部腳本,目錄的前面必須加上run-parts。

  1)星號(*)表示取值範圍內的全部值。例如,*在hour的位置,表示每小時執行一次。

  2)連字符(-)表示一個範圍。例如,8-12表示八、九、十、十一、12。

  3)逗號(,)表示分割指定的數值。例如:3,5-7,9表示3,5,6,7,9。

  4)正斜槓(/)表示步進值。例如,分鐘的位置爲*/5,表示每五分鐘執行一次。

  除了root用戶之外的全部用戶定義的crontab計劃任務都存放在/var/spool/cron目錄,經過crontab -e命令編輯,格式與/etc/crontab相同,能夠不用指定user-name。

  cron服務會每分鐘檢查一次/etc/crontab、/etc/cron.d/和/var/spool/cron/中的全部文件,並依此執行。

6. 實例

  實例1:每週末的凌晨一點鐘執行一次系統的raid-check

0 1 * * Sun root /usr/sbin/raid-check

  實例2:天天的4:02am分root用戶執行/etc/cron.daily目錄下的全部腳本,run-parts參數表示執行後面目錄中的全部腳本。

02 4 * * * root run-parts /etc/cron.daily

  實例3:天天的8-18每四小時,dodmaster用戶執行hislogclear.sh腳本,即8:44,12:44,16:44,20:44四個時間點,會執行該腳本。

[21:57:56][dodmaster@mha3 ~]$ crontab -l 44 8-20/4 * * * $HOME/.DailyShell/hislogclear.sh 

  實例4:每五分鐘執行一次

*/5 * * * * echo "every five minute to do it" >> time.txt 

  實例5:每一個工做日下午八點執行

0 20 * * 1-5 echo "every workday 20:00 to do it" >> time.txt

  實例6:每分鐘的30秒時執行,由於cron服務是每分鐘被喚醒一次,因此要執行精確到秒的任務須要藉助sleep命令。

* * * * * sleep 30echo "every minute 30 second to do it" >> time.txt

  實例7:每20秒執行一次,即表示在每分鐘的0秒、20秒、40秒各執行一次(也能夠是其餘的步長是20秒的值,例如:5s、25s、45s)

* * * * * echo "every 20 second to do it" >> time.txt * * * * * sleep 20echo "every 20 second to do it" >> time.txt * * * * * sleep 40echo "every 20 second to do it" >> time.txt

 

參考資料:

http://www.cnblogs.com/dingyingsi/archive/2013/04/16/3023623.html

http://blog.csdn.net/xiyuan1999/article/details/8160998

http://blog.chinaunix.net/uid-7552018-id-182133.html

相關文章
相關標籤/搜索