【26期】Linux第九周學習小總結

本周帶來的是慢慢的技術分享,有關于計劃任務的分享,涉及的知識點主要是at和cron,crontab的詳解,計劃任務可以將任何腳本、程序或文檔安排在某個最方便的時間運行,有利于我們的自動化運維,當某項任務多次重復,或者某個指定的時間點多次執行時,就可以使用計劃任務方便我們的工作。

計劃任務不是有只linux 才有的技術,windows中我們亦可以通過控制面板–>管理工具–>任務計劃程序,找到對應的任務計劃程序,我們可以在任務計劃程序庫中的列表中看到,我們的windows中也有很多默認的任務計劃程序,它們會在指定的時間或者滿足條件的時候執行,可以指定執行一次,多次,循環式的幫我們的windows的穩定默默地幫助,那么我們的linux有沒有那么智能呢?

我們學習的linux與計劃任務的命令有at、corn和corntab。

at: 未來的某時間點執行一次任務

用法:at [option] TIME

[option]

? ? ? ? ? -V 顯示版本信息

? ? ? ? ? -l:查看計劃任務列表;相當于atq

? ? ? ? ? -d:刪除指定的作業;相當于atrm

? ? ? ? ? -c 編號:查看計劃任務詳細內容

? ? ? ? ? -f 文件:調用文件中的命令進行任務

? ? ? ? ?-m:當任務被完成之后,將給用戶發送郵件

? ? ?TIME:定義出什么時候進行 at 這項任務的時間

? ? ?HH:MM [YYYY-mm-dd] ?若該時刻已過,則明天此時執行任務

? ? ?noon, midnight, teatime( 4pm) tomorrow now+#{minutes,hours,days, OR weeks} :這些都是一些通用的時間

? ? ?我們熟悉了一些at的使用選項,那我們開始實戰一下吧,我們的計劃任務是:在五分鐘后執行廣播,系統將在五分鐘后關閉。

? ??01

02

我們可以看到我們time是now+5min,就是說當我們退出編輯模式的一瞬間開始計算,而且我們的這個五分鐘后都是指的是從當前這一分鐘開始的,當我在練習的時候經常會使用,一分鐘完成某些操作,就會有剛完成編輯,突然就開始執行的情況,同樣使用時間HH:MM這樣的格式,也會碰到那種,錯過當前時間的事情,只能等明天了才能執行,或者刪除任務重新開始寫我們的計劃任務。

03

然后我們是用at -l可以查看我們任務計劃的列表,上面我通過紅色筆劃著的三個框框,第一個框框9值得是這個任務的編號,第二框框14:46:00指的是任務將要執行的時間愛你,最后的root是指任務的新建執行人是誰,如果希望了解更詳細的可以使用at -c來查詢詳細信息!

04

05

其實看著很長的一段文字,也就是最后的一點有用就是查看我們的計劃任務的執行信息,也可以通過文件的方式來查詢:/var/spool/at/ 這個目錄下存放著我們at的臨時文件,當我們生成任務是,會自動生成任務文件,當任務執行結束時,則自動刪除文件。

黑白名單

/etc/at.{allow,deny}控制用戶是否能執行at任務
白名單:
/etc/at.allow 默認不存在,只有該文件中的用戶才能執行at命令
黑名單:
/etc/at.deny 默認存在,拒絕該文件中用戶執行at命令, 而沒有在at.deny 文件中的使用者則可執行
如果兩個文件都不存在,只有
root 可以執行 at

好了,今天的重點不在于at,而是在于我們的cron

確保crond守護處于運行狀態:

CentOS 7:
systemctl status crond
CentOS 6:
service crond status

系統cron任務:系統維護作業
? ? /etc/crontab
用戶cron任務:
? ?crontab命令

?日志: /var/log/cron:用來監控我們的cron的每個操作配合tail -f執行

既然我們的系統任務在/etc/crontab中那我們查看一下這個文件

06

時間表示法:
(1) 特定值
給定時間點有效取值范圍內的值?

(2) *
給定時間點上有效取值范圍內的所有值
表示“每
…”
(3) 離散取值
#,#,#
(4) 連續取值
#-#
(5) 在指定時間范圍上,定義步長
/#: #即為步長?:這個步長指得是我們通過多長時間來執行一次比如在第一位的分鐘上*/5,就是每五分鐘一次

同時還給予了我們一些便利的時間格式:

@reboot Run once after reboot.
@yearly 0 0 1 1 *
@annually 0 0 1 1 *
@monthly 0 0 1 * *
@weekly 0 0 * * 0
@daily 0 0 * * *
@hourly 0 * * * *

用戶命令crontab:
crontab命令定義,每個用戶都有專用的cron任務文件:/var/spool/cron/USERNAME
? ? ? ? ?crontab命令:
? ? ? ? ?用法:crontab [-u user] [-l | -r | -e] [-i]

? ? ? ? 選項:
-l:
列出所有任務;
? ? ? ? ? ? ?-e: 編輯任務;
? ? ? ? ? ? ?-r: 移除所有任務;
? ? ? ? ? ? ?-i:同-r一同使用,以交互式模式移除指定任務
? ? ? ? ? ? ?-u user: root可運行,指定用戶管理cron任務
控制用戶執行計劃任務(黑白名單):/etc/cron.{allow,deny}

注意:沒有被重定向的輸出會被郵寄給用戶,不管是我們的at還是cron,crontab都是一樣,如果有輸出,就會被發mail通知用戶

作業小練習:

?1、每天的2點和12點整,將/etc備份至/testdir/backup目錄中,保存的文件名稱格式為“ etcbak-yyyy-mm-ddHH.tar.xz”
?2、每周2, 4, 7備份/var/log/messages文件至/logs目錄中,文件名形如“ messages-yyyymmdd”
?3、每兩小時取出當前系統/proc/meminfo文件中以SM開頭的信息追加至/tmp/meminfo.txt文件中
?4、工作日時間,每10分鐘執行一次磁盤空間檢查,一旦發現任何分區利用率高于80%,就執行wall警報 ?07

08

我的練習用了兩種方法來實現,一種是直接把命令寫在里面,不夠要注意%,要轉義使用,第二種方式是直接寫入我們的shell腳本里,能夠有很好的修改性,擴展性。

好了,今天的分享就到這里了,除了技術的分享,我還要吐槽一下這個編輯器,tab鍵被吃了嗎?。。。。。。。。。。。。。。。?/p>

你知道縮進多難受嗎?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?/p>

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/86627

(0)
努力!奮斗!努力!奮斗!
上一篇 2017-09-09 11:17
下一篇 2017-09-09 15:34

相關推薦

  • #!/bin/bash # for i in $(ls /etc/rc.d/rc3.d/ | grep  "\<K");do     echo $i.stop    &nbs…

    Linux干貨 2016-12-26
  • 細節決定成敗–空格的巨大作用以及正則表達式中元字符的轉義

    字符串的條件判定 1.字符串判定 一定要用雙[[ ]] 2.字符串判定=~默認支持擴展正則表達式,這里注意雙引號的使用 僅僅做是否包含時,有無雙引號無區別。 但是利用其他擴展表達式時 雙引號一定要去掉 錨定示例 多條件判定時-o -a使用時,不能使用雙中括號 空格有無的差別 !的使用細節 !到目前為止 有兩種意義 條件判定取反 歷史命令的調用 兩者的使用卻別…

    2017-03-19
  • sed與vim

    sed工具 簡介 ?Stream EDitor, 行編輯器 ?sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。Se…

    Linux干貨 2016-08-15
  • N25-第一周 總結

    linux bassic The first week of blogging 概要 計算機與操作系統、linux發行版及他們之間聯系與區別、Linux的哲學思想、linux系統上命令使用格式及基礎命令介紹、linux命令幫助說明、FHS 一、計算機與操作系統 什么是計算機? 電子計算機(computer),亦稱電腦,是一種利用電子學原理,根據一系列指令對數…

    Linux干貨 2016-12-04
  • 系統基礎之shell腳本編程詳解3(函數)

    shell腳本編程詳解3:    在前兩節我們分別介紹了shell腳本編程的基礎和循環,判斷的知識,今天我們分享腳本的另一種用法,函數. 概論:     函數function是由若干條shell命令組成的語句塊,實現代碼重用和模塊化編程。    它與shell…

    Linux干貨 2016-08-22
  • 20160804課堂作業

    grep正則表達式課堂作業 1、用正則表達式表示IP地址 #grep -E "(\<[1-9]|[1-9][[:digit:]]|1[[:digit:]][[:digit:]]|2[0-4][[:digit:]]|25[0-5]\>)\.(\<[[:digit:]]|[1-9][[:digit:]]|1[[:digit:]] [[…

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