Linux任務計劃,周期性任務執行詳解

Linux任務計劃,周期性任務執行

概述

本章將為大家介紹一些任務計劃和周期性任務計劃執行相關內容

任務計劃的分類主要有由兩種
   未來的某時間點執行一次某任務:at,batch
   周期性運行某任務:crontab

具體分為三個方面來說明:

   1、at計劃任務

   2、cron計劃任務

   3、mail命令

   4、計劃任務作業及練習

第一章 at,batch計劃任務

at是由atd服務提供的,在Centos6智商可以使用service atd start 來啟動服務;在Centos7上要使用systemctl start atd.service來啟動服務

at的使用方法:at[OPTION]...TIME
   TIME:
       HH:MM[YYYY-mm-dd]
       noon,midnight,teatime
       tomorrow
       now+#
           UNIT:minutes,hours,days,or weeks
at的作業

-l:at -l相當于atd命令,列出目前系統上面的所有當前用戶的at隊列;

-d:at -d相當于atrm命令,可以取消一個在at排程中的工作;
-v:可以使用較明顯的時間格式列出at中的工作列表;
-f:把at要執行的所有任務放置于文件中,讓at讀取此文件作為要執行的任務;
   如:at -f /PATH/TO/SOMEFILE TIME
-q QUEUE:指明隊列;
-c:查看指定作業的具體內容;如下圖

blob.png

注意:作業執行結果是以郵件發送給提交作業的用戶

batch命令:
   batch會讓系統自行選擇在系統資源較空閑的時間去執行指定的任務;
   (不用指定時間,所以這里就不多加說明)

第二章 周期性任務計劃:cron

服務程序:
   cronle:主程序包,提供了crond守護進程及相關輔助工具;
確保crond守護進程(daemon)處于運行狀態
   Centos6中可以使用service crond start來啟動crond服務;
   Centos7可以使用systemctl start crond.service來啟動crond服務;
向crond提交作業的方式不同于at,它需要使用專用的配置文件,此文件有固定格式,不建議使用文本編輯器直接編輯此文件,要使用crontab命令;
cron任務有兩類:系統cron和用戶cron;
   系統cron任務:主要用于實現系統自身的維護;
       手動編輯:/etc/crontab文件

[root@localhost ~]# >>cat /etc/crontab
SHELL=/bin/bash   #使用的shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin      #到哪些文件夾尋找我們使用的到的命令
MAILTO=root #運行之后郵件發送給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
注意:
   (1)每一行定義一個周期性任務;
   *  *  *  *  *: 定義周期性時間
   user-name:  運行任務的用戶身份
   command to be executed:要執行的任務
   (2)此處的環境變量不同于用戶登錄后獲得的系統變量,因此,建議命令使用絕對路徑,或者自定義PATH環境變量;
   (3)執行結果郵件發送給MAILTO指定的用戶

blob.png

用戶cron任務: 
命令:crontab命令 
用戶cron的配置格式:/var/spool/cron/USERNAME

SHELL=/bin/bash   #使用的shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin      #到哪些文件夾尋找我們使用的到的命令
MAILTO=USERNAME #運行之后郵件發送給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
# |  |  |  |  |
# *  *  *  *  * command to be executed
注意:
   (1)每行定義一個cron任務,共6個字段
   (2)此處的環境變量不同于用戶登錄后獲得的系統變量,因此,建議命令使用絕對路徑,或者自定義PATH環境變量;
   (3)執行結果郵件發送給當前用戶

時間表示法:
   (1)特定值;
       給定時間點有效取值范圍內的值;
           注意:day of week和day of month一般不同時使用;
   (2)*
       給定時間點上有效取值范圍內的所有值;表"每..."
   (3)離散取值:
       在時間點上使用逗號分隔的多個值;
       #,#,#
   (4)連續取值:-
       在時間點上使用-連接開頭和結束
           #-#
   (5)在指定時間點上,定義步長;
       /#: #即步長;
       注意:
           (1)指定的時間點不能被步長整除時,其意義將不復存在;
           (2)最小時間單位為"分鐘",想完成"秒"級任務,得需要額外借助與其他機制;
           定義成每分鐘任務:而在利用腳本實現在每分鐘之內,循環執行多次;

   示例:
       (1)3 * * * *:每小時執行執行一次;每小時的第3分鐘;
       (2)3 4 * * 5:每周執行一次;每周五的43分;
       (3)5 6 7 * *:每月執行一次;每月的7號的65分;
       (4)7 8 9 10 *:每年執行一次;每年的10987
       (5)9 8 * * 3,7:每周三和周日;每周三和周日的83分執行一次
       (6)0 8,20 * * 3,7:每周三和周日的8點和20點執行一次
       (7)0 9-18 * * 1-5:每周一到周五的9點到18點每小時執行一次
       (8)*/5 * * * *:每5分鐘執行一次任務;
       (9)*/7

crontab命令:
   crontab [-u user] [-l | -r | -e] [-i]
       -e:編輯任務;
       -l:列出所有任務;
       -r:移除所有任務;即刪除/var/spool/cron/USERNAME文件;
       -i:在使用-r選項移除所有任務時提示用戶確認;
       -u user:root用戶可為指定用戶管理cron任務


注意:運行結果以郵件通知給當前用戶;如果拒絕接受郵件;
   (1)COMMAND > /dev/null
   (2)COMMAND &> /dev/null
注意:定義COMMAND時,如果命令需要用到%,需要對其轉義;但放置于單引號中的%不用轉義亦可;  

   如果某任務在指定的時間因關機未能執行,下次開機是不會自動執行,如果期望他能夠繼續自動執行;可使用anacron實現;

第三章 mail命令

mail命令:mailx -send and recelve Internet mail
   MUA:Mail User Agent,用戶收發郵件的工具程序;
   mailx [-s 'SUBJECT'] username[@hostname]
       郵件正文的生成:
           (1)交互式的輸入;單獨成行可以表示正文結束;Ctrl+d提交亦可;
           (2)通過輸入重定向;
           (3)通過管道;

第四章 計劃任務作業及練習

1、每天的2點和12點整,將/etc備份至/testdir/backup目錄中,保存的文件名稱格式為“etcbak-yyyy-mm-dd-HH.tar.xz”

blob.png

2、每周2, 4, 7備份/var/log/messages文件至/logs目錄中,文件名形如“messages-yyyymmdd”

blob.png

3、每兩小時取出當前系統/proc/meminfo文件中以S或M開頭的信息追加至/tmp/meminfo.txt文件中

blob.png

4、工作日時間,每10分鐘執行一次磁盤空間檢查,一旦發現任何分區利用率高于80%,就執行wall警報

blob.png

原創文章,作者:Kartik,如若轉載,請注明出處:http://www.www58058.com/49539

(0)
KartikKartik
上一篇 2016-09-27
下一篇 2016-09-27

相關推薦

  • Linux運維之路基礎學習四

    當文件的權限不能滿足某個用戶時,ACL是一個好辦法

    Linux干貨 2017-12-03
  • Liunx系統命令的使用格式

    Liunx系統命令的格式 基本格式如下:               ~]# COMMAND OPTIONS ARGUMENTS COMMAND:      發起一個命令,請求內核將某個二進…

    Linux干貨 2016-10-28
  • 正則表達式

    正則表達式:             由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符            字面意義,而表示控制或通配的功能程序支持:  grep,sed,awk,vim,less…

    2017-08-05
  • python基礎 習題總結

    pyenv 編程題目總結(99乘法表 打印菱形與閃電 斐波那契數列 素數 猴子吃桃) 原反補碼與異或運算 list列表

    Linux干貨 2018-03-25
  • Http請求流程

    1、http請求流程 1.連接 當我們輸入這樣一個請求時,首先要建立一個socket連接,因為socket是通過ip和端口建立的,所以之前還有一個DNS解析過程,把www.mycompany.com變成ip,如果url里不包含端口號,則會使用該協議的默認端口號。 DNS的過程是這樣的:首先我們知道我們本地的機器上在配置網絡時都會填寫DNS,這樣本機就會把這個…

    Linux干貨 2017-02-13
  • 馬哥教育網絡班22期+第01周課程練習

    一、描述計算機的組成及其功能:     根據馮·諾依曼體系結構,把計算機劃分為五大部件:運算器、控制器、存儲器、輸入設備、輸出設備。 運算器(加法器):cpu的核心部件,也是計算機存在的價值之一,其采用二進制方式進行計算(因為電阻的存在,使得十進制無法精準處理);控制器:控制CPU讀指令[立即數和間接數],指令含有運算器需要的數…

    Linux干貨 2016-08-12
欧美性久久久久