計劃任務不是有只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的使用選項,那我們開始實戰一下吧,我們的計劃任務是:在五分鐘后執行廣播,系統將在五分鐘后關閉。
? ??
我們可以看到我們time是now+5min,就是說當我們退出編輯模式的一瞬間開始計算,而且我們的這個五分鐘后都是指的是從當前這一分鐘開始的,當我在練習的時候經常會使用,一分鐘完成某些操作,就會有剛完成編輯,突然就開始執行的情況,同樣使用時間HH:MM這樣的格式,也會碰到那種,錯過當前時間的事情,只能等明天了才能執行,或者刪除任務重新開始寫我們的計劃任務。
然后我們是用at -l可以查看我們任務計劃的列表,上面我通過紅色筆劃著的三個框框,第一個框框9值得是這個任務的編號,第二框框14:46:00指的是任務將要執行的時間愛你,最后的root是指任務的新建執行人是誰,如果希望了解更詳細的可以使用at -c來查詢詳細信息!
其實看著很長的一段文字,也就是最后的一點有用就是查看我們的計劃任務的執行信息,也可以通過文件的方式來查詢:/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中那我們查看一下這個文件
時間表示法:
(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文件中以S或M開頭的信息追加至/tmp/meminfo.txt文件中
?4、工作日時間,每10分鐘執行一次磁盤空間檢查,一旦發現任何分區利用率高于80%,就執行wall警報 ?
我的練習用了兩種方法來實現,一種是直接把命令寫在里面,不夠要注意%,要轉義使用,第二種方式是直接寫入我們的shell腳本里,能夠有很好的修改性,擴展性。
好了,今天的分享就到這里了,除了技術的分享,我還要吐槽一下這個編輯器,tab鍵被吃了嗎!?。。。。。。。。。。。。。?!
你知道縮進多難受嗎!?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?/p>
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/86627