天天看點

linux 系統定時任務 服務 詳解Centos 7 定時服務詳解介紹總結

文章目錄

  • Centos 7 定時服務詳解介紹
    • 1.定時任務概念
      • 01.定時任務作用
      • 02.定時任務分類
      • 03.定時任務實作方式
    • 2.定時任務實踐應用
      • 01.定時任務 實驗環境
      • 02.定時任務 配置方法
        • 2.1定時任務相關檔案
        • 2.2定時任務編寫格式
        • 2.3 編寫步驟
        • 2.4定時任務編寫注意事項:(規範)
  • 總結

Centos 7 定時服務詳解介紹

在企業中,存在很多資料需要備份,那麼我們如何讓這些資料,每天晚上23:59 自動備份呢?

今天呢,我結合部分實踐案列,分享一篇關于定時任務的知識點。

Linux下面有

atd

crond

兩種計劃任務,其中,

atd服務使用的at指令隻能執行一次

,而crond服務使用的crontab定義的指令,是循環作用的,是以crond才符合我們的要求。

放棄可以找到一萬個理由,堅持隻需一個信念

linux 系統定時任務 服務 詳解Centos 7 定時服務詳解介紹總結

1.定時任務概念

01.定時任務作用

  • 自動 完成操作指令
  • 定時備份系統資料資訊

02.定時任務分類

  • 定時任務軟體
    • cronie:

      預設系統自帶定時服務crond(crontab)

    • atd:

      需要安裝 at指令(yum -y install at)

      ,隻運作一次,一次性定時任務
    • anacron:

      非7*24小時運作的伺服器

03.定時任務實作方式

  • 系統定時任務(

    特殊的幾個目錄

    ),系統自帶的,不靈活
    • 系統定時任務周期:

      每小時

      控制定時任務目

      錄:

      /etc/cron.hourly

    • 系統定時任務周期:

      每一天

      控制定時任務目錄:

      /etc/cron.daily

      00:00-23:59
    • 系統定時任務周期:

      每一周

      控制定時任務目錄:

      /etc/cron.weekly

      7天
    • 系統定時任務周期:

      每個月

      控制定時任務目錄:

      /etc/cron.monthly

      30 28 31
  • 使用者定時任務
    • 使用者定時任務檢視:

      crontrabl -l(list) ----檢視定時任務資訊

    • 使用者定時任務編輯:

      crontab -e (edit) ----編輯定時任務資訊

    • 定時任務配置檔案:

      /var/spool/cron/root ---- root檔案表示root 使用者設定的定時任務

  • 常見提示資訊
    • no crontab for root

      :相應使用者沒有編輯定時任務
    • Do you want to retry the same edit

      :定時任務編輯錯誤是否繼續
  • linux 系統定時任務 服務 詳解Centos 7 定時服務詳解介紹總結

2.定時任務實踐應用

01.定時任務 實驗環境

系統版本 系統ip位址
Centos 7.4 192.168.10.11
  • 確定crond服務開啟
    [[email protected]/tmp]# systemctl status crond
    crond.service - Command Scheduler
       Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
       Active: active (running) since Tue 2021-08-17 15:56:50 CST; 4h 58min ago
     Main PID: 23739 (crond)
       CGroup: /system.slice/crond.service
               └─23739 /usr/sbin/crond -n
    
    Aug 17 15:56:50 hbs systemd[1]: Started Command ...
    Aug 17 15:56:50 hbs systemd[1]: Starting Command...
    Aug 17 15:56:50 hbs crond[23739]: (CRON) INFO (R...
    Aug 17 15:56:50 hbs crond[23739]: (CRON) INFO (r...
    Aug 17 15:56:50 hbs crond[23739]: (CRON) INFO (@...
    Hint: Some lines were ellipsized, use -l to show in full.
    [[email protected]/tmp]# 
               
  • 相關啟動指令
    Centos 6
    service crond start    //啟動服務
    service crond stop     //關閉服務
    service crond restart  //重新開機服務
    service crond reload   //重新載入配置
    service crond status   //檢視服務狀态 
    
    Centos 7
     systemctl stop crond   //關閉
     systemctl start crond   //開啟
     systemctl reload crond   //重新加載
     systemctl restart crond   //重新開機
     
               

02.定時任務 配置方法

2.1定時任務相關檔案

  • 定時任務 服務配置檔案目錄:

    /var/spool/cron

  • 定時任務 運作記錄日志檔案:

    /var/log/cron

  • 定時任務 禁止使用者運作名單:

    /etc/cron.deny

2.2定時任務編寫格式

  • 檢視編寫格式
    [[email protected]/tmp]# cat /etc/crontab 
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    
    # For details see man 4 crontabs
    
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
      分  時 日 月 周
    
    [[email protected]/tmp]# 
               
  • linux 系統定時任務 服務 詳解Centos 7 定時服務詳解介紹總結
  • 寫法:
    1.用數值表示 時間資訊
    00 02 *  *  *  備份檔案
    
    2.利用特殊符号表示時間資訊
    *     *    *   *    *   備份檔案
    /分鐘 /小時 /天  /月  /周
    
    =========================================
    PS:定時任務最短執行的周期為 每分鐘 
    */5       */ 6     */3      */1    */2
    每隔5分鐘  每隔6小時  每隔3日  每隔1月  每隔2周
    
    =========================================
    其它 寫法:
    01-05  02  * * *        每2日的01、02、03、04、05 執行一遍
    
    
    指定不連續的時間範圍:
    00  14,20  *  *  *  *    每天14點,20點執行一次
               
  • linux 系統定時任務 服務 詳解Centos 7 定時服務詳解介紹總結
  • 補充說明
    00/10  01,03  *  *  *   每天1點和3點的時候 每隔 10分鐘,執行一次
    30/10  01,03  *  *  *   每天1點和3點的時候 , 從30分鐘開始,每隔 10分鐘,執行一次
               
  • linux 系統定時任務 服務 詳解Centos 7 定時服務詳解介紹總結

2.3 編寫步驟

  • 編寫步驟
    每天淩晨兩點備份 /data目錄到 /backup
    
    第一個曆程: 寫上時間資訊
          00 02 * * *
    第二個曆程: 寫上完成任務的具體指令
          cp -a /data /backup
    第三個曆程: 編寫定時任務
          crontab -e 
          00 02 * * *  cp -a /data /backup
          
    ======================================
      [[email protected]~]#crontab -e 
     00 02 * * *  cp -a /data /backup	 
    
               

2.4定時任務編寫注意事項:(規範)

  • 編寫定時任務要有注釋說明
  • 編寫定時任務路徑資訊盡量使用絕對路徑
  • 編寫定時任務指令需要采用絕對路徑執行 /usr/sbin/useradd
    指令執行成功條件:
    	   useradd  ---> $PATH ---> /sbin/useradd ---> 指令執行成功
    	   定時任務執行時,識别的PATH資訊隻有: /usr/bin:/bin
    	   useradd指令--->usr/sbin/useradd
    
    是以,編寫要寫絕對路徑
    useradd指令--->usr/sbin/useradd
               
  • 編寫定時任務時,可以将輸出到螢幕上的資訊儲存到黑洞中,避免占用磁盤空間
    sh test.sh &>/dev/null
               
  • 編寫定時任務, 盡量不要産生螢幕輸出資訊
    tar zcvf /backup/data.tar.gz  /data    有資訊輸出
    
    tar zcf /backup/data.tar.gz  ./data    沒有資訊輸出
               
  • 當需要多個指令完成一個定時任務需求時,可以利用腳本編寫定時
    vim backup.sh 
    	   cp -a /data /backup	
    	   tar zcvf /backup/data.tar.gz  /data
    	   
    	   crontab -e 
    	   # xxxxx
    	   * * * * *  /bin/sh /server/scripts/backup.sh &>/dev/null
    
               
  • linux 系統定時任務 服務 詳解Centos 7 定時服務詳解介紹總結

總結

  • 對定時任務排查的方法
    1.檢查是否有定時任務配置檔案
    
    2.檢查定時任務日志檔案
    [[email protected]~]# tail -f /var/log/cron
    Aug 17 21:27:49 hbs crontab[26501]: PAM pam_end: NULL pam handle passed
    Aug 17 21:39:27 hbs crontab[26577]: (root) END EDIT (root)
    Aug 17 21:39:27 hbs crontab[26577]: PAM pam_end: NULL pam handle passed
    Aug 17 21:40:58 hbs  crontab[26595]: (hbs) END EDIT (hbs)
    Aug 17 21:41:01 hbs  CROND[26598]: (hbs) CMD (systemctl status crond)
    執行時間        主機名 編輯定時任務    以什麼使用者編輯或執行定時任務/幹了什麼事情  執行定時任務
    
               
  • 定時任務還有atd 定時任務
    at指令是一次性定時計劃任務,執行完一個任務後不再執行此任務了。
    
     at -f /tmp/date now +1 minutes   #設定1分鐘後執行/tmp/date檔案中的内容
     
     
     明天17點鐘,輸出時間到指定檔案内
     [[email protected]~]# echo 'love you' >/dev/null 
    [[email protected]~]#  at 17:00 tomorrow         
    at> echo 'love you' >/dev/null 
    at> <EOT>
    job 8 at Thu Aug 19 17:00:00 2021
    Can't open /var/run/atd.pid to signal atd. No atd running?
    [[email protected]~]# 
    
    删除已經設定的任務
    atq : 檢視定時任務
    atrm 8  :删除定時任務
               
  • linux 系統定時任務 服務 詳解Centos 7 定時服務詳解介紹總結
linux 系統定時任務 服務 詳解Centos 7 定時服務詳解介紹總結

繼續閱讀