crontab計劃任務

使用yum安裝:# yum install -y vixie-cron crontabs

說明:vixie-cron軟件包是cron的主程序;

crontabs軟件包是用來安裝、卸裝、或列舉用來驅動 cron 守護進程的表格的程序。


/sbin/service crond start //啓動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啓服務
/sbin/service crond reload //重新載入配置

查看crontab服務狀態:service crond status

手動啓動crontab服務:service crond start

查看crontab服務是否已設置爲開機啓動,執行命令:ntsysv

沒有就加入開機自動啓動:免得每次手動啓動麻煩:chkconfig --level 35 crond on


語法介紹:

使用權限:root用戶和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作業的狀態


比如說root查看自己的cron設置:crontab -u root -l


  再例如,root想刪除fred的cron設置:crontab -u fred -r


  在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e


  進入vi編輯模式,編輯的內容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt




時程表的格式:

   f1  f2  f3  f4  f5  program 
   分 時 日 月 周  命令

  f1表示分鐘,1~59 每分鐘用*或者 */1表示
  f2表示小時,1~23(0表示0點)
  f3表示日期即一個月份中的第幾日,1~31
  f4表示月份,1~12
  f5標識星期,0~6(0表示星期天)
  f6要執行的程序

使用者也可以將所有的設定先存放在檔案file中,用crontab file的方式來設定時程表。

由於Unix版本不一樣,所以部分語法也有差別,請具體情況實際解決。


cron文件語法:

          分     小時    日       月       星期      命令

        0-59   0-23   1-31   1-12     0-6     command     (取值範圍,0表示週日一般一行對應一個任務)

        "*"代表取值範圍內的數字,

        "/"代表"每",

        "-"代表從某個數字到某個數字,

        ","分開幾個離散的數字



crontab文件的一些例子:

    每月每天每小時的第 0 分鐘執行一次 /bin/ls :

  0 * * * * /bin/ls 

    在 12 月內, 每天的早上 6 點到 12 點中,每隔 20 分鐘執行一次 /usr/bin/backup :

  */20 6-12 * 12 * /usr/bin/backup 

   週一到週五每天下午 5:00 寄一封信給 alex_mail_name :

  0 17 * * 1-5 mail -s "hi" alex_mail_name < /tmp/maildata 

   每月每天的午夜 0 點 20 分, 2 點 20 分, 4 點 20 分....執行 echo "haha"

  20 0-23/2 * * * echo "haha" 

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

  0 23-7/2,8 * * * date 



任務調度設置文件的寫法


      可用crontab -e命令來編輯,編輯的是/var/spool/cron下對應用戶的cron文件,也可以直接修改/etc/crontab文件

具體格式如下:

      Minute Hour Day Month Dayofweek    command

      分鐘     小時   天     月        天每星期        命令


每個字段代表的含義如下:

    Minute             每個小時的第幾分鐘執行該任務

     Hour                每天的第幾個小時執行該任務

     Day                 每月的第幾天執行該任務

     Month              每年的第幾個月執行該任務

     DayOfWeek     每週的第幾天執行該任務

     Command        指定要執行的程序

    在這些字段裏,除了“Command”是每次都必須指定的字段以外,其它字段皆爲可選字段,可視需要決定。對於不指定的字段,要用“*”來填補其位置。


舉例如下:

5       *        *           *      *     ls              指定每小時的第5分鐘執行一次ls命令

30     5       *           *      *     ls              指定每天的 5:30 執行ls命令

30     7       8          *      *      ls              指定每月8號的7:30分執行ls命令

30     5       8          6     *      ls              指定每年的6月8日5:30執行ls命令

30     6       *           *     0      ls              指定每星期日的6:30執行ls命令[注:0表示星期天,1表示星期1,以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等。]

30     3      10,20     *     *      ls     每月10號及20號的3:30執行ls命令[注:“,”用來連接多個不連續的時段]

25     8-11 *            *     *      ls       每天8-11點的第25分鐘執行ls命令[注:“-”用來連接連續的時段]

*/15   *        *            *     *      ls          每15分鐘執行一次ls命令 [即每個小時的第0 15 30 45 60分鐘執行ls命令 ]

30    6      */10         *      *      ls       每個月中,每隔10天6:30執行一次ls命令[即每月的1、11、21、31日是的6:30執行一次ls命令。 ]

每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行文件

50    7       *             *      *     root      run-parts      /etc/cron.daily   [ 注:run-parts參數表示,執行後面目錄中的所有可執行文件。 ]


編輯/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"這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是文件夾名了


例如:         1、在命令行輸入: crontab -e 然後添加相應的任務,wq存盤退出。

        2、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務


11 2 21 10 * rm -rf /mnt/fb





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