shell-crontab快速手冊

來源:互聯網
上載者:User
     本文主要基於以下英文文檔:http://www.adminschoice.com/docs/crontab.htm.
        cron是一個UNIX工具,使用cron後台進程使得任務能夠以後台方式在特定時間自動執行。這些任務通常叫做cron jobs. crontab是一個包括在特定時間要啟動並執行cron記錄的
        1.Crontab限制:
              如果你的名字出現在/usr/lib/cron/cron.allow,你可以執行crontab.如果那個檔案不存在,而你的名字又沒有在/usr/lib/cron/cron.deny中出現,你也可以使用crontab.如果只有cron.deny存在,而且是空檔案,那麼所有使用者都可以使用crontab.如果兩個檔案都不存在,那麼只有root使用者可以使用crontab.all/deny檔案每行一個使用者名稱。
        2.crontab命令:
       首先需要指定一個編輯器來開啟crontab檔案,通常使用vi.
       crontab -e:編輯你的crontab檔案或者當它不存在時建立一個。
       crontab -l:顯示你的crontab檔案。
       crontab -r:刪除你的crontab檔案。
     3.crontab檔案文法:
       
*     *   *   *    *  command to be executed
        -     -    -    -    -
        |     |     |     |     |
        |     |     |     |     +----- day of week (0 - 6) (Sunday=0)
        |     |     |     +------- month (1 - 12)
        |     |     +--------- day of month (1 - 31)
        |     +----------- hour (0 - 23)
       +------------- min (0 - 59)
       上面value域中的*表示所有該列括弧中的合法值。value列可以是一個*,也可以是使用逗號隔開的一組元素。所有列的元素要麼是上述範圍的的一個數字,要麼是被分割符(-)分開的上述範圍內的兩個數字(表示一個左右閉合域)。
        日期的指定可以在兩個域中:month day和week day.如果兩個在一條記錄中都指定,那麼他們是兩個記錄的累計效果。
   4.crontab樣本
        
下面crontab檔案中的一列在18:30從/home/someuser/tmp中移除臨時檔案:
         30 18 * * * rm /home/someuser/tmp/*
         如下所示改變參數會使得該命令按照不同的時間計劃執行:
min hour day/month month day/week  Execution time
30 0 1 1,6,12 * 1月,6月和12月的1日的00:30分執行
0 20 * 10 1-5 10月份的每個工作日(周一至周五)的20:點執行
0 0 1,10,15 * * 每個月的1,10,15日午夜執行
5,10 0 10 * 1 每個星期一以及每個月的10號,在00:05與00:10執行

         5.Crontab環境
         cron從使用者的HOME目錄,使用/usr/bin/sh來調用命令。
         cron為每個shell提供一個預設的環境,定義如下:
          HOME=user's-home-directory
          LOGNAME=user's-login-id
          PATH=/usr/bin:/usr/sbin:.
          SHELL=/usr/bin/sh
          如果使用者希望他們的.profile被執行,則必須顯式的在crontab的命令指令碼中執行,或者在一個單獨的指令碼中,這個單獨的指令碼被crontab命令指令碼調用。
           6.Disable Email
            在命令列下輸出到螢幕上的資訊在使用crontab時會寫入到mail中,如果不需要,將下面命令放到crontab的cron job line的末尾。
            備忘:在UNIX上使用>/dev/null運行一個程式時可以屏蔽掉程式向stdout的輸出,然而如果程式也有向stderr的輸出時,仍然會將向stderr輸出的資訊顯示到螢幕上。常用的一種屏蔽stderr的方法是使用管道,把stderr也輸出到stdout,而stdout輸出到/dev/null中。一般有如下寫法:proc >/dev/null 2>&1.這種方法僅適用於sh環境下,如果在其他shell環境,例如csh,就會出現“Ambiguous output redirect.”這樣的錯誤。幸好crontab的預設shell正是sh.
          7.產生記錄檔
             與6的原理一樣,將其重新導向到檔案即可:
             >/home/someuser/cronlogs/a.log 2>&1

            
         

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.