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 17:35
下一篇 2016-09-27 23:02

相關推薦

  • 加油吧!少年!—至我和我M25期的伙伴

    引用 衣帶漸寬終不悔,為伊消得人憔悴。—王國維《人間詞話》 轉眼已到了27歲的年紀,不知道自己是否還稱得上少年。公交上讓座被小朋友成為叔叔也都是很多年的事了。哪怕再有一顆少年心現在也要肩負起整個家庭的責任。 從畢業已工作了將近六個年頭,無聊的工作平凡的薪水已經使我厭倦。閉上眼睛以后需要贍養四個老人,還要照顧孩子以后這些難題映入腦海。曾經以為遙遠的…

    Linux干貨 2017-07-11
  • 一些基礎命令的基本用法介紹

    節選一部分常用參數用法 基礎命令 tty 切換X Window或命令行模式 Ctrl+Alt+F1~F6  tty1~tty6文字界面 Ctrl+Alt+F7  圖形界面 startx 登錄圖形界面系統 date 日期 date +%Y/%m/%d  當前日期 date +%H:…

    Linux干貨 2016-10-31
  • 【N25第三周作業】用戶及權限管理

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who root     pts/0        2016-12-14&nb…

    Linux干貨 2016-12-14
  • 常見RAID總結

    RAID淺析 目錄索引 一、定義 二、特點 三、常用RAID級別      四、RAID實現方式 五、實際環境測試 一、定義: 磁盤陣列(Redundant Arrays of Independent Disks,RAID),有“獨立磁盤構成的具有冗余能力的陣列”之意。 獨立磁盤冗余陣列(RAID,redundant array…

    Linux干貨 2016-04-12
  • mysql-proxy 讀寫分離

    1. 簡介     mysql-proxy 是官方為此的一個測試,項目, 可以完成讀寫分離。但是項目目前還不是很成熟,這里僅作測試。  2. mysql-proxy安裝部署 # wget http://downloads.mysql.com/archives/get/file/mysql-…

    Linux干貨 2015-12-21
  • 0809linux基礎小記(sed和vim用法)

    sed  [options] ‘scripts’ inputfile -n: 不輸出模式空間內容的自動打印 -e: 多點編輯 -f:從指定文件中讀取編輯腳本 -i:原處編輯 scripts: ’地址命令’ 地址定界: (1)  不給地址:對全文進行處理 (2)  單地址: #:  指定的行 例: sed '2…

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