Linux - crontab(定時任務)

襲冷發表於2014-03-31
一、介紹
   crontab命令的功能是在一定的時間間隔排程一些命令的執行。當安裝完成作業系統之後,預設便會啟動此任務排程命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。

二、引數
   -u :指定一個使用者
   -l :列出某個使用者的任務計劃
   -r :刪除某個使用者的任務
   -e :編輯某個使用者的任務

三、cron檔案
   1、編輯命令
       1)、在命令列輸入: crontab -e 然後新增相應的任務,wq存檔退出
       2)、直接編輯/etc/crontab 檔案,即vi /etc/crontab,新增相應的任務

   2、檔案格式
       Minute Hour Day Month DayofWeek CommandPath

   3、引數說明
       Minute:每個小時的第幾分鐘執行該任務;取值範圍0-59
       Hour:每天的第幾個小時執行該任務;取值範圍0-23
       Day:每月的第幾天執行該任務;取值範圍1-31
       Month:每年的第幾個月執行該任務;取值範圍1-12
       DayOfWeek:每週的第幾天執行該任務;取值範圍0-6,0表示週末
       CommandPath:指定要執行的程式路徑

   4、時間格式
       * :表示任意的時刻;如小時位 * 則表示每個小時
       n :表示特定的時刻;如小時位 5 就表示5時
       n,m :表示特定的幾個時刻;如小時位 1,10 就表示1時和10時
       n-m :表示一個時間段;如小時位 1-5 就表示1到5點

       */n : 表示每隔多少個時間執行一次;如小時位 */2 就表示每隔2個小時執行,也可以寫成 1-23/2

       n/m : 表示在指定的增量n的基礎上每隔多少時間執行一次;如分鐘位 3/5 表示從第3分鐘開始,每5分鐘執行一次(即3,8,13 ...)


   5、排程示例
       * 1 * * * /opt/script/backup.sh :從1:0到1:59 每隔1分鐘 執行
       15 05 * * * /opt/script/backup.sh :05:15 執行
       */10 * * * * /opt/script/backup.sh :每隔10分 執行
       0 17 * * 1 /opt/script/backup.sh :每週一的 17:00 執行
       2 8-20/3 * * * /opt/script/backup.sh :8:02,11:02,14:02,17:02,20:02 執行

   6、後臺執行
       1)、說明
           當在前臺執行某個作業時,終端被該作業佔據;而在後臺執行作業時,它不會佔據終端。可以使用&命令把作業放到後臺執行
           需要與使用者互動的作業當注意不要放在後臺執行
           在後臺執行的作業一樣會將結果輸出到螢幕上,如果放在後臺執行的作業會產生大量的輸出,最好將它的輸出重定向到某個檔案中
       2)、標識
           0 :表示鍵盤輸入
           1 :表示標準輸出
           2 :表示錯誤輸出
           & :後臺執行
           > : 覆蓋檔案內容
           >>:追加檔案內容
           &1 :表示的是檔案描述1,表示標準輸出;如果這裡少了&就成了數字1,就表示重定向到檔案1
           2>&1 :將錯誤輸出重定向到標準輸出
           1>/dev/null :將標準輸出重定向到檔案/dev/null;1>/dev/null等同於>/dev/null
       3)、示例
           0 2 * * * /u01/test.sh 1>/dev/null 2>&1 &
           這句話的意思就是在後臺執行這條命令,並將錯誤輸出2重定向到標準輸出1,然後將標準輸出1全部放到/dev/null 檔案,也就是清空。
       4)、位置
           2>&1 需要寫在command 1>file 後面。
           在command 1>file 2>&1,首先是 command 1>file 將標準輸出重定向到file中,2>&1 是標準錯誤拷貝了標準輸出,也就是同樣被重定向到file中,最終結果就是標準輸出和錯誤都被重定向到file中。
           如果改成:command 2>&1 >file 2>&1,標準錯誤拷貝了標準輸出的行為,但此時標準輸出還是在終端。>file 後輸出才被重定向到file,但標準錯誤仍然保持在終端。
 
 

相關文章