Linux crontab詳解

來源:互聯網
上載者:User

cron來源於希臘單詞chronos(意為“時間”),是linux系統下一個自動執行指定任務的程式。例如,你想在每晚睡覺期間建立某些檔案或檔案夾的備份,就可以用cron來自動執行。服務的啟動和停止cron服務是linux的內建服務,但它不會開機自動啟動。

     Cron 是Linux的內建服務,可以用以下的方法啟動、關閉、重啟服務:
  /sbin/service crond start //啟動服務
  /sbin/service crond stop //關閉服務
  /sbin/service crond restart //重啟服務
  /sbin/service crond reload //重新載入配置

  以上1-4行分別為啟動、停止、重啟服務和重新載入配置。
  也可以將這個服務在系統啟動的時候自動啟動:

     (1).  cd /etc/rc.d/rc.local    (進入rc.local 檔案,添加第二步的指令碼)

     (2).  /sbin/service crond start

      建立一個執行kettle 作業的SH檔案,kettle用到jkd,當然要先安裝後JDK後再建立SH檔案 :

         #!/bin/bash

         #Set Environment by NetSeek excutekettle.sh in kettle.3.2

         JAVA_HOME=/usr/local/jdk

         JRE_HOME=/usr/local/jre

         PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

         export JAVA_HOME JRE_HOME PATH

         /root/Kettle3.2/kitchen.sh -rep kbi_mata -user admin -pass admin -job JobMainCR >

         /root/Kettle3.2/kettle_log.log


   查看、編輯和刪除cron把命令列儲存在crontab(cron table)檔案裡,這個檔案通常在 /etc 目錄下。每個系統使用者都可以有自己的crontab(在 /var/spool/cron/ 下):

            # cd /var/spool/cron/  (進入/var/spool/cron/)

            # vi root       (編輯目前使用者的crontab,若目前使用者是root,則有一個叫root的crontab)

               59 23 * * * /root/Kettle3.2/excutekettle.sh  (/root中的crontab的定時任務)

      

      如果讓crond 在開機時運行,應該改變其運行層級;

      [root@localhost ~]# chkconfig --levels 35 crond on

     
  要查看目前使用者的crontab,輸入 crontab -l;
  要編輯crontab,輸入 crontab -e;
  要刪除crontab,輸入 crontab -r。
  如當前是root身份,要查看/編輯/刪除/某使用者的crontab,只需在相應的命令後加上 -u USERNAME(如 crontab -e -u USERNAME)即可。
  crontab檔案的預設編輯器是vi,可以輸入 export VISUAL='editor' 更改預設編輯器。
  cron服務每分鐘不僅要讀一次 /var/spool/cron 目錄內的所有檔案,

      還需要讀一次 /etc/crontab 檔案。配置這個檔案也能讓cron執行任務。

     

     使用crontab命令是對使用者級任務的配置,而編輯 /etc/crontab 檔案是對系統級任務的配置
  文法說明
  以下是兩個cron語句的例子(在 /etc/crontab 檔案裡)。前者用來晚間備份 /etc 目錄,後者運行Analog程式處理伺服器的統計資訊:
  12 3 * * * root tar czf /usr/local/back**/daily/etc.tar.gz /etc >> /dev/null 2>&1
  52 5 * * * root /usr/local/src/analog-5.32-lh/analog >> /dev/null 2>&1

  以下是cron語句中的欄位與欄位說明:
  欄位說明
  1分鐘(0-59)
  2小時(2-24)
  3日期(1-31)
  4月份(1-12;或英文縮寫Jan、Feb等)
  5周幾(0-6,0為周日;或單詞縮寫Sun、Mon等)
  6使用者名稱(執行命令時以此使用者的身份)
  7要執行的命令(路徑)
  現在來看第一行:12 3 * * * root tar czf /usr/local/back**/daily/etc.tar.gz /etc >> /dev/null 2>&1
  這條語句將在每天的淩晨3點12分(03:12)運行
  tar czf /usr/local/back**/daily/etc.tar.gz /etc 命令。>> /dev/null 2>&1
  表示把所有標準輸出發送到 /dev/null(linux的資源回收筒),把標準錯誤輸出(2)發送到和標準輸出(1)同樣的地方(即 /dev/null)。運行這行命令將不會產生任何輸出。
  這條語句可以變得稍微複雜一點:
  30 15 13 6 1 * root tar czf /usr/local/back**/daily/etc.tar.gz /etc >> /dev/null 2>&1
  它將在6月13日周一的15:30運行 tar czf /usr/local/back**/daily/etc.tar.gz /etc 命令。
  以下語句可以達到同樣的效果:30 15 13 Jun Mon * root tar czf /usr/local/back**/daily/etc.tar.gz /etc >> /dev/null 2>&1
  如果你想以使用者joey的身份每小時的第15分鐘運行某個程式,可以使用:
  15 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1
  其中的星號(*)是萬用字元,表示cron將忽略這個欄位。
  如果你想每兩小時就運行某個程式,可以在小時欄位裡使用 */2。
  它將會在2點,4點,6點……22點,24點運行。
  具體語句如下:0 */2 * * * joey /usr/bin/somecommand >> /dev/null 2>&1cron
  語句中還可以使用逗號(,)來指定多個時間。
  例如你想在每小時的15分和30分運行某個程式,可以在分鐘欄位使用
  15,30:15,30 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1
  如果你想在每月的第一周(即1號到7號)每天的指定時間運行某個程式,可以在日期欄位使用 1-7:15,30 */2 1-7 * * joey /usr/bin/somecommand >> /dev/null 2>&1
  這條語句將在每月的第1-7日每兩小時的15分和30分(02:15,02:30……22: 15,22:30等)運行 /usr/bin/somecommand 命令。
  如果你想在每天的16:18執行一個指令碼集合,可以把所有要執行的指令碼放到一個目錄中(如 /home/username/cron),可以使用:
  18 16 * * * root run-parts /home/username/cron >> /dev/null 2>&1
  如果你想儲存某個程式的輸出結果, 可以把 >> /dev/null 2>&1 替換為 >> /home/user/somecommand.log 2>&1 。
  總結
  查看目前使用者的cron配置,使用 crontab -l
  編輯目前使用者的cron配置,使用 crontab -e
  刪除目前使用者的cron配置,使用 crontab -r
  以root身份查看/編輯/刪除某使用者的cron配置,在命令後加上 -u USERNAME 配置系統級的任務,編輯 /etc/crontab 檔案
 查看郵件:

    # cd /var/spool/mail/root

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.