天天看點

Linux未來任務的排程——at,batch,crontab指令

### 在linux中,我們可以實作對于任務的未來排程,進而可以借助于linux實作半自動化運維操作方式,簡而言之就是可以在未來的某個時間點,系統可以自動運作我們部署的任務

前提:

 需要一個準确的時間

 可以支援任務排程的應用程式

**注意**:

 在計劃任務中,所有執行的指令的輸出結果,這類及結果均以郵件的方式發送至指定的使用者郵箱中;

 郵箱的發送:

  mail指令

   mail [-s SUBJECT]  USERNAME[@DOMAINNAME]

   (Ctrd + d發送)

    系統使用者的郵箱的目錄/var/spool/mail/

 at指令的常用用法:

  at, batch, atq, atrm - queue, examine or delete jobs for later execution

   at [option] timespec

   timespec:

    1.HH:MM [YYYY-mm-dd]

    2.noon,midnight,teatime

    3.tomorrow

    4.now+#UNIT

     UNIT:minutes,hours,days,or weeks

at定義的計劃任務都在某個特定的任務隊列中;預設at隻啟用了一個at隊列,通常用a表示;

Linux未來任務的排程——at,batch,crontab指令

at指令的常用用法:

 at [-q QUEUE_NAME] time

    定義計劃任務,輸入任務之後,Ctrl+d送出

 atq或at -l

   檢視所有任務隊列中尚未執行計劃任務清單;

 atrm JOB_ID或at -d JOB_ID

    撤銷任務隊列中尚未執行的指定任務辨別符的計劃任務

 at -f /PATH/TO/SOMEFILE time

    從檔案中讀取指令操作而不是标準輸入中讀取

 at -c JOB_ID

    檢視指定的計劃任務的具體内容;

比如:

 在2019年新年跨年時給liujingyu發一封電子郵件,祝他新年快樂。

Linux未來任務的排程——at,batch,crontab指令

用at -c 5 指令檢視以後,隻有最後兩行是我們預先寫的語句;

Linux未來任務的排程——at,batch,crontab指令

batch指令:

 與at指令類似的,預設的隊列是b,都是一次性執行的定義的計劃任務;

 差別是:

  batch指令定義計劃任務時,無需指定執行時間,系統會自動選擇比較空閑的時間來完成此任務;

crond任務的排程程序;能夠識别和周期性的執行crontab指令定制的計劃任務;

 crond定義的計劃任務分為兩類:

  系統任務:

    全局性任務:通常使用/etc/crontab檔案定義;

Linux未來任務的排程——at,batch,crontab指令

其不難看出通用格式:

 *  *   * *  * user-name command to be executed

分鐘 小時 天 月 星期

   注意:

    * * * * *:定義周期性執行計劃任務的具體時間;

    user-name:執行此任務的使用者;

    command to be executed:此次計劃任務的執行主體,建議使用絕對路徑;

  使用者任務:

   個體性任務通常存放在/var/spool/cron/目錄下的與使用者名對于的檔案中

   此類檔案格式:    

    *  *   * *  * command to be execute

時間表示法:

     1.某個特定時間:給定的時間點的有效取值範圍内的所有有效值;

       0 3 4 9 * (9月4日3點整執行腳本)

     2.通配符時間:"*",表示"每..."的意思;

     3.離散的時間點:

         0 8,20 * * 1,2,4,5 (周1、2、4、5的8點和20點整執行腳本)

     4.連續的時間段 

        0-10 8-12 * * *

     5.步進時間:

        */3 * * * * 每三分鐘執行一次

        */9 * * * *:無法真正實作每9分鐘執行一次;是以預設情況下,步進長度應該是能夠被60整除的數字;

        注意:最小的時間機關是分鐘,如果計劃使用不足一分鐘的若幹秒為執行周期,則必須借助于其他的機制,如:編寫shell腳本;

 crontab指令:

  crontab [-u user] file

      crontab [-u user] [-l | -r | -e] [-i] [-s]

      -u user:超級使用者為自己或其他使用者設定或編輯周期性任務時使用的選項;

      -l:檢視所有的已經被定義好的計劃任務清單;

      -e:使用vi編輯器編輯臨時的crontab檔案;

      -r:移除所有的計劃任務;建議謹慎使用;

      -i:在使用-r選項時,能夠進行互動式删除;

crontab -e

* * * * * root /usr/bin/date

ls /var/spool/cron/root

裡邊就會有剛才寫的腳本;

mail 

繼續閱讀