CentOS計劃任務詳解

一、計劃任務應用場景:

       需要每天對服務器上的數據進行備份,但是白天服務器的訪問量較大,服務器承受著較大的壓力,備份任務只能在夜晚服務器較空閑時才能進行?;蛘咝枰R時在某時間點執行一個任務等,都需要用到計劃任務的功能。

二、計劃任務分類:     

       一次性計劃任務:at

       周期性計劃任務:cron

三、一次性計劃任務:

at [options]… Time 

       常用選項:

              -l:查看作業隊列,相當于atq

              -d #:刪除指定的作業,相當于atrm

              -f /path/from/somefile:從指定文件中讀取作業,而不再使用驕傲胡輸入

              -c #:查看指定作業的具體內容

              -q queue:指明隊列

       Time可以使用以下格式表示:

              HH:MM[YYYY-mm-dd]

              noon,midnight,teatime

              tomorrow

              now +#:

                     Unit:Minutes,Hours,Days,Weeks

                     at now +1min:表示1分鐘之后執行任務

                     at 04pm +3day:表示3天后的下午4點

例:在10:57在系統廣播“hello”

注:要執行的的任務輸入完成之后,使用ctrl + d鍵確認完成此計劃。

blob.png

at任務的任務隊列:

       at任務存放在/var/spool/at目錄中

       默認為a隊列,任務名以a開頭。

blob.png

at任務的執行方式:

       at任務的執行依賴于atd服務,要使at任務能準時執行,需要保證atq服務開啟,且最好設置為開機自啟。

       service atd start

       chkocnfig atd on

       作業的執行結果是以郵件的形式發送給提交作業的用戶,在執行at任務應盡量將輸出重定向,避免產生過多的垃圾郵件。

控制普通用戶能否創建at任務

       /etc/at.deny  #黑名單

              黑名單中的用戶不允許創建at任務

       /etc/at.allow       #白名單,默認情況下,此文件未在系統中創建,需手動添加

              只允許在白名單中的用戶執行at任務

       若不想讓所有普通用戶創建at任務

              1、刪掉at.deny文件

              2、創建at.allow文件,文件內容為空

白名單優先級高于黑名單,白名單和黑名單擁有同一個用戶,則以白名單為準

四、周期性計劃任務

cron的服務程序為crond

       主程序包為cronie,提供crond守護進程及相關的輔助工具。

       crontab計劃任務要能準時運行,需要確保crond守護進程(daemon)處于運行狀態,且應設置為開機啟動。

       在CentOS6和7啟動任務時略有不同。

                     CentOS7

                            systemctl start crond

                            systemctl enable crond

                     CentOS6

                            service  crond  start

                            chkconfig crond on

cron任務計劃分類:

       系統cron任務:主要用于實現系統自身的維護。

              編輯/etc/crontab完成任務定義

       用戶cron任務:完成用戶自定義的任務

              使用crontab命令定義任務

etc/crontab文件的配置格式:

blob.png

 分 時 日 月 周   Username  Command to be excuted"命令的絕對路徑"

例:每天晚上9點10分運行echo命令

10 21 * * * centos /bin/echo "Howdy!"

注意:

       (1)、每一行定義一個周期性任務。

       (2)、此處的PATH環境變量不同于用戶登陸后的環境變量

       (3)、執行結果以郵件的形式發送給指定用戶,為避免產生過多的垃圾郵件,命令產生的輸出應進行重定向處理。

 

時間表示法:

       (1)、特定值

              給定時間點有效取值范圍內的值

       (2)、*

              給定時間點上有效取值范圍內的所有值。表示”每…“

       (3)指定時間點上的離散取值

              在給定時間點上使用逗號分隔的多個值即可。

       (4)連續取值

              在時間點上使用“-”連接開頭和結束

       (5)在指定時間點上,定義步長。

              /#: #即步長

注意:

       (1)指定的時間點不能被步長整除時,其意義將不復存在

       (2)最小時間單位為分鐘,想完成秒級任務,需借助于其他機制。可定義成每分鐘任務:再利用腳本實現每分鐘之內,循環執行多次。

       (3)*  *  1,10,20  *  0,6

              這樣的事件格式標識每月1號、10號、20號,以及每周六、每周日執行任務

例:

       (1) 3 * * * *:每小時第三分鐘

       (2) 3 4 * * 5:每周5的4點的第3分鐘

       (3) 5 6 7 * *:每月7日6點5分。

       (4) 7 8 9 10 *:每年第10月9號8點7分

       (5) 9 8,20 * * 3,7:每周三和周日的8點9分和20點9分

       (6) 1 9-18 * * 1-5;周一到周五的9點到18點每小時執行。

       (7) */5 * * * *:每5分鐘執行一次

crontab命令:

       crontab [options]

              -u user

              -l (list)

              -e (edit)

              -r:移除所有任務

       crontab編輯時不指定用戶,為編輯當前登錄用戶的計劃任務;root可以編輯指定用戶的計劃任務。

       crontab -u gentoo -e       #編輯指定用戶的計劃任務

       crontab -u gentoo -l        #查看指定用戶的計劃任務

例:每周六凌晨0點5分備份/etc目錄下的所有配置文件至/back目錄下,命名為"etcbak-年月日-時.tar.xz“

5 0 * * 6 root /bin/tar -Jcf /etc/*.conf /backup/etcbak-`date +\%F-\%H`.tar.xz

注意:在crontab中,%具有特殊意義,若要在命令中使用%,需要轉義

管理普通用戶的計劃任務權限

       /etc/cron.deny    #黑名單中的用戶不能配置計劃任務。

       /etc/cron.allow     #只有白名單中的用戶可以配置計劃任務。若白名單中未指定用戶,則所有普通用戶都不可配置計劃任務。

白名單優先級高于黑名單

五、實戰演練

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

10 0  * * 0,2,4 root /bin/cp /log/message /logs/messages-`date %F`

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

0 2 * * * root /bin/cat /proc/meminfo | /bin/grep '^[S|M].*' >> /tmp/meminfo.txt

注:在使用命令時,應通過which獲取命令的絕對路徑,再使用絕對路徑。

原創文章,作者:M20-1鐘明波,如若轉載,請注明出處:http://www.www58058.com/44893

(1)
M20-1鐘明波M20-1鐘明波
上一篇 2016-09-09 12:55
下一篇 2016-09-09 14:35

相關推薦

  • 任務計劃配置

        任務計劃:         linux任務計劃,周期任務執行         未來的某個時間點執行一次任務:at,batch:系統自行選擇空閑時間去執行此處指定的任務 &n…

    Linux干貨 2016-09-12
  • N22-第十一周作業

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 (1)數字簽名 A與B通信,B發給A一段數據,為了證明數據確實是B發送過來的,B首先會用單向加密算法從數據中提取一段特征碼,然后用自己的私鑰加密這段特征碼和原始數據后,發送給A;A接受到數據,首先用B的公鑰解密,獲取到特征碼和原始數據;然后用同樣的單向加密算法從原始數據中提取一段特征碼,與之前用公鑰解密得到的特…

    Linux干貨 2016-11-01
  • bash腳本基礎認知

    編程基礎:程序:指令+數據                過程式:以指令為中心,數據服務于指令              &nbs…

    Linux干貨 2017-03-02
  • N21沉舟第六周作業

    N21沉舟第六周作業 1、  復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; cp /etc/rc.d/rc.sysinit /tmp vim /tmp/rc.sysinit %s/^[[:space:]]\+/#&…

    Linux干貨 2016-08-08
  • Linux基礎學習總結(一)

    Linux 安裝運行步驟: 進入\\172.16.0.1\python10 ? ? ? ? ?用戶名:python10 ? ? ? ? ?密碼:python10magedu 進入目錄? ?ftp://172.16.0.1/pub/ISOs/ 下載linux系統鏡像文件 ? ? ? ? ? CentOS-6.9-x86_64-bin-DVD1.iso ? ? …

    Linux干貨 2018-03-16
  • Centos 7 快速進入圖形界面

    Centos 7 快速進入圖形界面.pdf

    系統運維 2016-04-05

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-10 14:15

    文章思路清晰,層次分明,有理論也有實踐,很值得學習的一篇博客。

欧美性久久久久